71 DWORD dwDesiredAccess = 0;
72 DWORD dwCreationDisposition = 0;
109 DWORD dwBytesRead = 0;
113 dwBytesRead = (
DWORD)-1L;
121 DWORD dwBytesWritten = 0;
125 dwBytesWritten = (
DWORD)-1;
128 return dwBytesWritten;
151 CStringW szExtractDir, szCabFileName;
157 if (szCabFileName.
Find(
'\\') >= 0)
159 CStringW szNewDirName = szExtractDir;
163 while (szCabFileName.
Find(
'\\', nTokenPos) >= 0)
169 szNewDirName +=
L"\\" +
token;
176 "ERROR: Unable to create directory %S (err %lu)\n", szNewDirName.
GetString(),
dwErr);
182 CStringW szNewFileName = szExtractDir +
L"\\" + szCabFileName;
193 iResult = !fnFileClose(pfdin->hf);
259 if (!pfnFDICreate || !pfnFDICopy || !pfnFDIDestroy)
266 ExtractHandler = pfnFDICreate(
267 fnMemAlloc, fnMemFree, fnFileOpen, fnFileRead, fnFileWrite, fnFileClose, fnFileSeek,
cpuUNKNOWN,
291 szCabNameUTF8 =
"\\" + szCabNameUTF8;
293 bResult = pfnFDICopy(
298 pfnFDIDestroy(ExtractHandler);
BOOL ExtractFilesFromCab(const CStringW &szCabName, const CStringW &szCabDir, const CStringW &szOutputDir)
BOOL MultiByteToWide(const CStringA &szSource, CStringW &szDest, UINT Codepage)
BOOL WideToMultiByte(const CStringW &szSource, CStringA &szDest, UINT Codepage)
HFDI(* fnFDICreate)(PFNALLOC, PFNFREE, PFNOPEN, PFNREAD, PFNWRITE, PFNCLOSE, PFNSEEK, int, PERF)
BOOL(* fnFDICopy)(HFDI, LPSTR, LPSTR, INT, PFNFDINOTIFY, PFNFDIDECRYPT, void FAR *pvUser)
BOOL(* fnFDIDestroy)(HFDI)
void ReleaseBuffer(_In_ int nNewLength=-1)
PXSTR GetString() noexcept
CStringT Tokenize(_In_z_ PCXSTR pszTokens, _Inout_ int &iStart) const
int Find(_In_ PCXSTR pszSub, _In_opt_ int iStart=0) const noexcept
#define ReadFile(a, b, c, d, e)
#define GetProcAddress(x, y)
#define HeapFree(x, y, z)
#define FILE_ATTRIBUTE_NORMAL
#define WideCharToMultiByte
#define MultiByteToWideChar
BOOL WINAPI CreateDirectoryW(IN LPCWSTR lpPathName, IN LPSECURITY_ATTRIBUTES lpSecurityAttributes)
BOOL WINAPI WriteFile(IN HANDLE hFile, IN LPCVOID lpBuffer, IN DWORD nNumberOfBytesToWrite OPTIONAL, OUT LPDWORD lpNumberOfBytesWritten, IN LPOVERLAPPED lpOverlapped OPTIONAL)
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
UINT(__cdecl * PFNWRITE)(INT_PTR hf, void *pv, UINT cb)
int(__cdecl * PFNCLOSE)(INT_PTR hf)
INT_PTR(__cdecl * PFNFDINOTIFY)(FDINOTIFICATIONTYPE fdint, PFDINOTIFICATION pfdin)
UINT(__cdecl * PFNREAD)(INT_PTR hf, void *pv, UINT cb)
void(__cdecl * PFNFREE)(void *pv)
void *(__cdecl * PFNALLOC)(ULONG cb)
INT_PTR(__cdecl * PFNOPEN)(char *pszFile, int oflag, int pmode)
LONG(__cdecl * PFNSEEK)(INT_PTR hf, LONG dist, int seektype)
int(__cdecl * PFNFDIDECRYPT)(PFDIDECRYPT pfdid)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat token
#define ERROR_ALREADY_EXISTS
static HMODULE MODULEINFO DWORD cb
#define UNREFERENCED_PARAMETER(P)
DWORD WINAPI GetLastError(void)