コード例 #1
0
ファイル: CabUnpacker.cs プロジェクト: virmitio/coapp
        internal CabUnpacker(CabEngine cabEngine)
            : base(cabEngine)
        {
            this.fdiAllocMemHandler = this.CabAllocMem;
            this.fdiFreeMemHandler = this.CabFreeMem;
            this.fdiOpenStreamHandler = this.CabOpenStream;
            this.fdiReadStreamHandler = this.CabReadStream;
            this.fdiWriteStreamHandler = this.CabWriteStream;
            this.fdiCloseStreamHandler = this.CabCloseStream;
            this.fdiSeekStreamHandler = this.CabSeekStream;

            this.fdiHandle = NativeMethods.FDI.Create(
                this.fdiAllocMemHandler,
                this.fdiFreeMemHandler,
                this.fdiOpenStreamHandler,
                this.fdiReadStreamHandler,
                this.fdiWriteStreamHandler,
                this.fdiCloseStreamHandler,
                this.fdiSeekStreamHandler,
                NativeMethods.FDI.CPU_80386,
                this.ErfHandle.AddrOfPinnedObject());
            if (this.Erf.Error)
            {
                int error = this.Erf.Oper;
                int errorCode = this.Erf.Type;
                this.ErfHandle.Free();
                throw new CabException(
                    error,
                    errorCode,
                    CabException.GetErrorMessage(error, errorCode, true));
            }
        }
コード例 #2
0
ファイル: CabUnpacker.cs プロジェクト: caoxk/coapp
        internal CabUnpacker(CabEngine cabEngine)
            : base(cabEngine)
        {
            this.fdiAllocMemHandler    = this.CabAllocMem;
            this.fdiFreeMemHandler     = this.CabFreeMem;
            this.fdiOpenStreamHandler  = this.CabOpenStream;
            this.fdiReadStreamHandler  = this.CabReadStream;
            this.fdiWriteStreamHandler = this.CabWriteStream;
            this.fdiCloseStreamHandler = this.CabCloseStream;
            this.fdiSeekStreamHandler  = this.CabSeekStream;

            this.fdiHandle = NativeMethods.FDI.Create(
                this.fdiAllocMemHandler,
                this.fdiFreeMemHandler,
                this.fdiOpenStreamHandler,
                this.fdiReadStreamHandler,
                this.fdiWriteStreamHandler,
                this.fdiCloseStreamHandler,
                this.fdiSeekStreamHandler,
                NativeMethods.FDI.CPU_80386,
                this.ErfHandle.AddrOfPinnedObject());
            if (this.Erf.Error)
            {
                int error     = this.Erf.Oper;
                int errorCode = this.Erf.Type;
                this.ErfHandle.Free();
                throw new CabException(
                          error,
                          errorCode,
                          CabException.GetErrorMessage(error, errorCode, true));
            }
        }
コード例 #3
0
ファイル: CabWorker.cs プロジェクト: virmitio/coapp
        internal CabWorker(CabEngine cabEngine)
        {
            this.cabEngine = cabEngine;
            this.streamHandles = new HandleManager<Stream>();
            this.erf = new NativeMethods.ERF();
            this.erfHandle = GCHandle.Alloc(this.erf, GCHandleType.Pinned);
            this.cabNumbers = new Dictionary<string, short>(1);

            // 32K seems to be the size of the largest chunks processed by cabinet.dll.
            // But just in case, this buffer will auto-enlarge.
            this.buf = new byte[32768];
        }
コード例 #4
0
        internal CabWorker(CabEngine cabEngine)
        {
            this.cabEngine     = cabEngine;
            this.streamHandles = new HandleManager <Stream>();
            this.erf           = new NativeMethods.ERF();
            this.erfHandle     = GCHandle.Alloc(this.erf, GCHandleType.Pinned);
            this.cabNumbers    = new Dictionary <string, short>(1);

            // 32K seems to be the size of the largest chunks processed by cabinet.dll.
            // But just in case, this buffer will auto-enlarge.
            this.buf = new byte[32768];
        }
コード例 #5
0
ファイル: CabPacker.cs プロジェクト: caoxk/coapp
 internal CabPacker(CabEngine cabEngine)
     : base(cabEngine)
 {
     this.fciAllocMemHandler    = this.CabAllocMem;
     this.fciFreeMemHandler     = this.CabFreeMem;
     this.fciOpenStreamHandler  = this.CabOpenStreamEx;
     this.fciReadStreamHandler  = this.CabReadStreamEx;
     this.fciWriteStreamHandler = this.CabWriteStreamEx;
     this.fciCloseStreamHandler = this.CabCloseStreamEx;
     this.fciSeekStreamHandler  = this.CabSeekStreamEx;
     this.fciFilePlacedHandler  = this.CabFilePlaced;
     this.fciDeleteFileHandler  = this.CabDeleteFile;
     this.fciGetTempFileHandler = this.CabGetTempFile;
     this.fciGetNextCabinet     = this.CabGetNextCabinet;
     this.fciCreateStatus       = this.CabCreateStatus;
     this.fciGetOpenInfo        = this.CabGetOpenInfo;
     this.tempStreams           = new List <Stream>();
     this.compressionLevel      = CompressionLevel.Normal;
 }
コード例 #6
0
ファイル: CabPacker.cs プロジェクト: virmitio/coapp
 internal CabPacker(CabEngine cabEngine)
     : base(cabEngine)
 {
     this.fciAllocMemHandler    = this.CabAllocMem;
     this.fciFreeMemHandler     = this.CabFreeMem;
     this.fciOpenStreamHandler  = this.CabOpenStreamEx;
     this.fciReadStreamHandler  = this.CabReadStreamEx;
     this.fciWriteStreamHandler = this.CabWriteStreamEx;
     this.fciCloseStreamHandler = this.CabCloseStreamEx;
     this.fciSeekStreamHandler  = this.CabSeekStreamEx;
     this.fciFilePlacedHandler  = this.CabFilePlaced;
     this.fciDeleteFileHandler  = this.CabDeleteFile;
     this.fciGetTempFileHandler = this.CabGetTempFile;
     this.fciGetNextCabinet     = this.CabGetNextCabinet;
     this.fciCreateStatus       = this.CabCreateStatus;
     this.fciGetOpenInfo        = this.CabGetOpenInfo;
     this.tempStreams = new List<Stream>();
     this.compressionLevel = CompressionLevel.Normal;
 }