33 0x4d, 0x53, 0x43, 0x46, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
34 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x01, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00,
35 0x00, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x00, 0x00,
36 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd1, 0x38, 0xf0, 0x48, 0x20, 0x00, 0x74, 0x72, 0x69, 0x73,
37 0x74, 0x72, 0x61, 0x6d, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd1,
38 0x38, 0xf0, 0x48, 0x20, 0x00, 0x77, 0x69, 0x6e, 0x65, 0x00, 0x08, 0x00, 0x00, 0x00, 0x18, 0x00,
39 0x00, 0x00, 0x00, 0x00, 0xd1, 0x38, 0xf0, 0x48, 0x20, 0x00, 0x73, 0x68, 0x61, 0x6e, 0x64, 0x79,
40 0x00, 0x67, 0x2c, 0x03, 0x85, 0x23, 0x00, 0x20, 0x00, 0x43, 0x4b, 0xcb, 0x49, 0x2c, 0x2d, 0x4a,
41 0xcd, 0x4b, 0x4e, 0xe5, 0xe5, 0x2a, 0xcd, 0x4b, 0xce, 0xcf, 0x2d, 0x28, 0x4a, 0x2d, 0x2e, 0x4e,
42 0x4d, 0xe1, 0xe5, 0x2a, 0x2e, 0x49, 0x2d, 0xca, 0x03, 0x8a, 0x02, 0x00
72 ok(0,
"Received unexpected notification (%p, %u, %lu, %lu)\n",
Context,
80 ok(0,
"Received unexpected notification (%p, %u, %lu, %lu)\n",
Context,
95 DWORD expected_lasterror;
97 } invalid_parameters[] =
116 invalid_parameters[
i].MsgHandler,
NULL);
117 ok(!
ret,
"[%d] Expected SetupIterateCabinetA to return 0, got %d\n",
i,
ret);
120 "[%d] Expected GetLastError() to return %u, got %u\n",
126 ok(!
ret,
"Expected SetupIterateCabinetA to return 0, got %d\n",
ret);
129 "Expected GetLastError() to return ERROR_NOT_ENOUGH_MEMORY, got %u\n",
134 ok(!
ret,
"Expected SetupIterateCabinetA to return 0, got %d\n",
ret);
137 "Expected GetLastError() to return ERROR_NOT_ENOUGH_MEMORY, got %u\n",
145 static const WCHAR nonexistentW[] = {
'c',
':',
'\\',
'n',
'o',
'n',
'e',
'x',
'i',
's',
't',
'e',
'n',
't',
'.',
'c',
'a',
'b',0};
156 DWORD expected_lasterror;
158 } invalid_parameters[] =
169 win_skip(
"SetupIterateCabinetW is not available\n");
182 invalid_parameters[
i].MsgHandler,
NULL);
183 ok(!
ret,
"[%d] Expected SetupIterateCabinetW to return 0, got %d\n",
i,
ret);
186 "[%d] Expected GetLastError() to return %u, got %u\n",
192 ok(!
ret,
"Expected SetupIterateCabinetW to return 0, got %d\n",
ret);
195 "Expected GetLastError() to return ERROR_INVALID_PARAMETER, got %u\n",
200 ok(!
ret,
"Expected SetupIterateCabinetW to return 0, got %d\n",
ret);
203 "Expected GetLastError() to return ERROR_INVALID_PARAMETER, got %u\n",
208 ok(!
ret,
"Expected SetupIterateCabinetW to return 0, got %d\n",
ret);
211 "Expected GetLastError() to return ERROR_NOT_ENOUGH_MEMORY, got %u\n",
216 ok(!
ret,
"Expected SetupIterateCabinetW to return 0, got %d\n",
ret);
219 "Expected GetLastError() to return ERROR_NOT_ENOUGH_MEMORY, got %u\n",
228 *(
volatile char*)0 = 2;
235 *(
volatile char*)0 = 2;
251 ok(!
ret,
"Expected SetupIterateCabinetA to return 0, got %d\n",
ret);
253 "Expected GetLastError() to return ERROR_INVALID_DATA, got %u\n",
258 ok(!
ret,
"Expected SetupIterateCabinetA to return 0, got %d\n",
ret);
260 "Expected GetLastError() to return ERROR_INVALID_DATA, got %u\n",
274 win_skip(
"SetupIterateCabinetW is not available\n");
285 ok(!
ret,
"Expected SetupIterateCabinetW to return 0, got %d\n",
ret);
287 "Expected GetLastError() to return ERROR_INVALID_DATA, got %u\n",
292 ok(!
ret,
"Expected SetupIterateCabinetW to return 0, got %d\n",
ret);
294 "Expected GetLastError() to return ERROR_INVALID_DATA, got %u\n",
322 "Expected empty CabinetFile, got \"%s\"\n",
info->CabinetFile);
330 const char *cabinet_file = (
const char *)Param2;
337 "[%d] Expected file \"%s\", got \"%s\"\n",
340 "[%d] Expected cabinet \"%s\", got \"%s\"\n",
348 ok(0,
"Unexpectedly enumerated more than number of files in cabinet, index = %d\n",
index);
357 "[%d] Expected cabinet \"%s\", got \"%s\"\n",
360 "[%d] Expected target \"%s\", got \"%s\"\n",
363 "[%d] Expected Win32Error 0, got %u\n",
391 ok(
ret == 1,
"Expected SetupIterateCabinetA to return 1, got %d\n",
ret);
432 const WCHAR *cabinet_file = (
const WCHAR *)Param2;
439 "[%d] Expected file %s, got %s\n",
442 "[%d] Expected cabinet %s, got %s\n",
450 ok(0,
"Unexpectedly enumerated more than number of files in cabinet, index = %d\n",
index);
459 "[%d] Expected cabinet %s, got %s\n",
462 "[%d] Expected target %s, got %s\n",
465 "[%d] Expected Win32Error 0, got %u\n",
486 win_skip(
"SetupIterateCabinetW is not available\n");
500 ok(
ret == 1,
"Expected SetupIterateCabinetW to return 1, got %d\n",
ret);
int strcmp(const char *String1, const char *String2)
char * strcpy(char *DstString, const char *SrcString)
#define ERROR_NOT_ENOUGH_MEMORY
#define ERROR_CALL_NOT_IMPLEMENTED
#define ERROR_INVALID_PARAMETER
#define CreateFileA(a, b, c, d, e, f, g)
#define FILE_ATTRIBUTE_NORMAL
BOOL WINAPI DeleteFileA(IN LPCSTR lpFileName)
BOOL WINAPI DeleteFileW(IN LPCWSTR lpFileName)
BOOL WINAPI WriteFile(IN HANDLE hFile, IN LPCVOID lpBuffer, IN DWORD nNumberOfBytesToWrite OPTIONAL, OUT LPDWORD lpNumberOfBytesWritten, IN LPOVERLAPPED lpOverlapped OPTIONAL)
DWORD WINAPI GetTempPathW(IN DWORD count, OUT LPWSTR path)
DWORD WINAPI GetTempPathA(IN DWORD nBufferLength, OUT LPSTR lpBuffer)
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
BOOL WINAPI SetupIterateCabinetW(PCWSTR CabinetFile, DWORD Reserved, PSP_FILE_CALLBACK_W MsgHandler, PVOID Context)
BOOL WINAPI SetupIterateCabinetA(PCSTR CabinetFile, DWORD Reserved, PSP_FILE_CALLBACK_A MsgHandler, PVOID Context)
UINT WINAPI GetTempFileNameW(IN LPCWSTR lpPathName, IN LPCWSTR lpPrefixString, IN UINT uUnique, OUT LPWSTR lpTempFileName)
UINT WINAPI GetTempFileNameA(IN LPCSTR lpPathName, IN LPCSTR lpPrefixString, IN UINT uUnique, OUT LPSTR lpTempFileName)
UINT(CALLBACK * PSP_FILE_CALLBACK_W)(IN PVOID Context, IN UINT Notification, IN UINT_PTR Param1, IN UINT_PTR Param2)
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
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 GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
static const WCHAR emptyW[]
#define ERROR_FILE_NOT_FOUND
#define todo_wine_if(is_todo)
static const BYTE comp_cab_zip_multi[]
static UINT CALLBACK crash_callbackW(PVOID Context, UINT Notification, UINT_PTR Param1, UINT_PTR Param2)
static void test_invalid_parametersA(void)
static void test_invalid_callbackW(void)
static void create_source_fileW(LPWSTR filename, const BYTE *data, DWORD size)
static const WCHAR * expected_filesW[]
static UINT CALLBACK dummy_callbackA(PVOID Context, UINT Notification, UINT_PTR Param1, UINT_PTR Param2)
static UINT CALLBACK dummy_callbackW(PVOID Context, UINT Notification, UINT_PTR Param1, UINT_PTR Param2)
static void test_invalid_callbackA(void)
static void test_invalid_parametersW(void)
static UINT CALLBACK crash_callbackA(PVOID Context, UINT Notification, UINT_PTR Param1, UINT_PTR Param2)
static const WCHAR tristramW[]
static UINT CALLBACK simple_callbackA(PVOID Context, UINT Notification, UINT_PTR Param1, UINT_PTR Param2)
static void test_simple_enumerationW(void)
static const WCHAR docW[]
static UINT CALLBACK simple_callbackW(PVOID Context, UINT Notification, UINT_PTR Param1, UINT_PTR Param2)
static const WCHAR shandyW[]
static void test_simple_enumerationA(void)
static const char * expected_files[]
static const WCHAR wineW[]
static void create_source_fileA(LPSTR filename, const BYTE *data, DWORD size)
unsigned __int3264 UINT_PTR
#define SPFILENOTIFY_CABINETINFO
UINT(CALLBACK * PSP_FILE_CALLBACK_A)(PVOID, UINT, UINT_PTR, UINT_PTR)
#define SPFILENOTIFY_FILEEXTRACTED
#define SPFILENOTIFY_FILEINCABINET
_In_ PWDFDEVICE_INIT _In_ PFN_WDF_DEVICE_SHUTDOWN_NOTIFICATION Notification
DWORD WINAPI GetLastError(void)
#define ERROR_INVALID_DATA