Beispiel #1
0
 private static IntPtr FdiCreate(
     NativeMethods.FdiMemAllocDelegate fnMemAlloc,
     NativeMethods.FdiMemFreeDelegate fnMemFree,
     NativeMethods.FdiFileOpenDelegate fnFileOpen,
     NativeMethods.FdiFileReadDelegate fnFileRead,
     NativeMethods.FdiFileWriteDelegate fnFileWrite,
     NativeMethods.FdiFileCloseDelegate fnFileClose,
     NativeMethods.FdiFileSeekDelegate fnFileSeek,
     NativeMethods.CabError erf)
 {
     return(NativeMethods.FdiCreate(fnMemAlloc, fnMemFree, fnFileOpen, fnFileRead, fnFileWrite,
                                    fnFileClose, fnFileSeek, CpuTypeUnknown, erf));
 }
 public CabArchive(byte[] data)
 {
     _fileReadDelegate = FileRead;
     _fileOpenDelegate = InputFileOpen;
     _femAllocDelegate = MemAlloc;
     _fileSeekDelegate = FileSeek;
     _memFreeDelegate = MemFree;
     _fileWriteDelegate = FileWrite;
     _fileCloseDelegate = InputFileClose;
     _inputData = data;
     _decompressFiles = new List<NativeMethods.DecompressFile>();
     _presentFiles = new List<string>();
     _erf = new NativeMethods.CabError();
     _hfdi = IntPtr.Zero;
 }
    public CabExtractor(string cabFilePath)
    {
        var cabBytes =
            File.ReadAllBytes(cabFilePath);

        _inputData = cabBytes;
        var cabFileLocation = Path.GetDirectoryName(cabFilePath) ?? "";

        _extractionFolderPath = Path.Combine(cabFileLocation, ExtractedFolderName);
        _erf                   = new NativeMethods.CabError();
        FdiContext             = IntPtr.Zero;
        _fdiAllocMemHandler    = MemAlloc;
        _fdiFreeMemHandler     = MemFree;
        _fdiOpenStreamHandler  = InputFileOpen;
        _fdiReadStreamHandler  = FileRead;
        _fdiWriteStreamHandler = FileWrite;
        _fdiCloseStreamHandler = InputFileClose;
        _fdiSeekStreamHandler  = FileSeek;
        FdiContext             = FdiCreate(_fdiAllocMemHandler, _fdiFreeMemHandler, _fdiOpenStreamHandler, _fdiReadStreamHandler, _fdiWriteStreamHandler, _fdiCloseStreamHandler, _fdiSeekStreamHandler, _erf);
    }
        public CabExtractor(string cabFilePath)
        {
            var cabBytes =
               File.ReadAllBytes(cabFilePath);
            _inputData = cabBytes;
            var cabFileLocation = Path.GetDirectoryName(cabFilePath) ?? "";
            _extractionFolderPath = Path.Combine(cabFileLocation, ExtractedFolderName);
            _erf = new NativeMethods.CabError();
            FdiContext = IntPtr.Zero;

            _fdiAllocMemHandler = MemAlloc;
            _fdiFreeMemHandler = MemFree;
            _fdiOpenStreamHandler = InputFileOpen;
            _fdiReadStreamHandler = FileRead;
            _fdiWriteStreamHandler = FileWrite;
            _fdiCloseStreamHandler = InputFileClose;
            _fdiSeekStreamHandler = FileSeek;

            FdiContext = FdiCreate(_fdiAllocMemHandler, _fdiFreeMemHandler, _fdiOpenStreamHandler, _fdiReadStreamHandler, _fdiWriteStreamHandler, _fdiCloseStreamHandler, _fdiSeekStreamHandler, _erf);


        }