public 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)); } }
protected 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]; }
protected 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]; }
public 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; }
public 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; }