Esempio n. 1
0
        public CabUnpacker(CabEngine cabEngine)
            : base(cabEngine)
        {
            fdiAllocMemHandler    = CabAllocMem;
            fdiFreeMemHandler     = CabFreeMem;
            fdiOpenStreamHandler  = CabOpenStream;
            fdiReadStreamHandler  = CabReadStream;
            fdiWriteStreamHandler = CabWriteStream;
            fdiCloseStreamHandler = CabCloseStream;
            fdiSeekStreamHandler  = CabSeekStream;

            fdiHandle = NativeMethods.FDI.Create(
                fdiAllocMemHandler,
                fdiFreeMemHandler,
                fdiOpenStreamHandler,
                fdiReadStreamHandler,
                fdiWriteStreamHandler,
                fdiCloseStreamHandler,
                fdiSeekStreamHandler,
                NativeMethods.FDI.CPU_80386,
                ErfHandle.AddrOfPinnedObject());
            if (Erf.Error)
            {
                int error     = Erf.Oper;
                int errorCode = Erf.Type;
                ErfHandle.Free();
                throw new CabException(
                          error,
                          errorCode,
                          CabException.GetErrorMessage(error, errorCode, true));
            }
        }
Esempio n. 2
0
 protected override void Dispose(bool disposing)
 {
     try {
         if (disposing)
         {
             if (fdiHandle != null)
             {
                 fdiHandle.Dispose();
                 fdiHandle = null;
             }
         }
     } finally {
         base.Dispose(disposing);
     }
 }