18 #define SECL_NO_UI 0x2 19 #define SECL_LOG_USAGE 0x8 20 #define SECL_USE_IDLIST 0x10 21 #define SECL_ALLOW_NONEXE 0x20 22 #define SECL_RUNAS 0x40 25 #define ShellExecCmdLine proxy_ShellExecCmdLine 27 #define shell32_hInstance GetModuleHandle(NULL) 28 #define IDS_FILE_NOT_FOUND (-1) 50 for (
pch = psz + 1; *
pch && ich + 1 < cchArg0; ++ich, ++
pch)
57 else if (*
pch ==
L'"')
104 if (pwszCommand ==
NULL)
218 info.lpVerb = pszVerb;
219 info.lpFile = szFile;
220 info.lpParameters = (pchParams && *pchParams) ? pchParams :
NULL;
221 info.lpDirectory = pwszStartDir;
240 #undef ShellExecCmdLine 285 { __LINE__, 0xBADFACE,
FALSE,
NULL,
L"system32" },
286 { __LINE__, 0xBADFACE,
FALSE,
NULL,
L"C:\\Program Files" },
288 { __LINE__, 0xBADFACE,
TRUE,
NULL,
L"." },
289 { __LINE__, 0xBADFACE,
TRUE,
NULL,
L"system32" },
290 { __LINE__, 0xBADFACE,
TRUE,
NULL,
L"C:\\Program Files" },
294 { __LINE__,
TRUE,
FALSE,
L"notepad",
L"system32" },
295 { __LINE__,
TRUE,
FALSE,
L"notepad",
L"C:\\Program Files" },
297 { __LINE__,
TRUE,
FALSE,
L"notepad \"Test File.txt\"",
L"." },
300 { __LINE__,
TRUE,
TRUE,
L"notepad",
L"system32" },
301 { __LINE__,
TRUE,
TRUE,
L"notepad",
L"C:\\Program Files" },
302 { __LINE__,
TRUE,
TRUE,
L"notepad \"Test File.txt\"",
NULL },
303 { __LINE__,
TRUE,
TRUE,
L"notepad \"Test File.txt\"",
L"." },
307 { __LINE__,
TRUE,
FALSE,
L"notepad.exe",
L"system32" },
308 { __LINE__,
TRUE,
FALSE,
L"notepad.exe",
L"C:\\Program Files" },
309 { __LINE__,
TRUE,
FALSE,
L"notepad.exe \"Test File.txt\"",
NULL },
310 { __LINE__,
TRUE,
FALSE,
L"notepad.exe \"Test File.txt\"",
L"." },
312 { __LINE__,
TRUE,
TRUE,
L"notepad.exe",
L"." },
313 { __LINE__,
TRUE,
TRUE,
L"notepad.exe",
L"system32" },
314 { __LINE__,
TRUE,
TRUE,
L"notepad.exe",
L"C:\\Program Files" },
315 { __LINE__,
TRUE,
TRUE,
L"notepad.exe \"Test File.txt\"",
NULL },
316 { __LINE__,
TRUE,
TRUE,
L"notepad.exe \"Test File.txt\"",
L"." },
320 { __LINE__,
FALSE,
FALSE,
L"C:\\notepad.exe",
L"system32" },
321 { __LINE__,
FALSE,
FALSE,
L"C:\\notepad.exe",
L"C:\\Program Files" },
322 { __LINE__,
FALSE,
FALSE,
L"C:\\notepad.exe \"Test File.txt\"",
NULL },
323 { __LINE__,
FALSE,
FALSE,
L"C:\\notepad.exe \"Test File.txt\"",
L"." },
325 { __LINE__,
FALSE,
TRUE,
L"C:\\notepad.exe",
L"." },
326 { __LINE__,
FALSE,
TRUE,
L"C:\\notepad.exe",
L"system32" },
327 { __LINE__,
FALSE,
TRUE,
L"C:\\notepad.exe",
L"C:\\Program Files" },
328 { __LINE__,
FALSE,
TRUE,
L"C:\\notepad.exe \"Test File.txt\"",
NULL },
329 { __LINE__,
FALSE,
TRUE,
L"C:\\notepad.exe \"Test File.txt\"",
L"." },
333 { __LINE__,
TRUE,
FALSE,
L"\"notepad\"",
L"system32" },
334 { __LINE__,
TRUE,
FALSE,
L"\"notepad\"",
L"C:\\Program Files" },
335 { __LINE__,
TRUE,
FALSE,
L"\"notepad\" \"Test File.txt\"",
NULL },
336 { __LINE__,
TRUE,
FALSE,
L"\"notepad\" \"Test File.txt\"",
L"." },
338 { __LINE__,
TRUE,
TRUE,
L"\"notepad\"",
L"." },
339 { __LINE__,
TRUE,
TRUE,
L"\"notepad\"",
L"system32" },
340 { __LINE__,
TRUE,
TRUE,
L"\"notepad\"",
L"C:\\Program Files" },
341 { __LINE__,
TRUE,
TRUE,
L"\"notepad\" \"Test File.txt\"",
NULL },
342 { __LINE__,
TRUE,
TRUE,
L"\"notepad\" \"Test File.txt\"",
L"." },
345 { __LINE__,
TRUE,
FALSE,
L"\"notepad.exe\"",
L"." },
346 { __LINE__,
TRUE,
FALSE,
L"\"notepad.exe\"",
L"system32" },
347 { __LINE__,
TRUE,
FALSE,
L"\"notepad.exe\"",
L"C:\\Program Files" },
348 { __LINE__,
TRUE,
FALSE,
L"\"notepad.exe\" \"Test File.txt\"",
NULL },
349 { __LINE__,
TRUE,
FALSE,
L"\"notepad.exe\" \"Test File.txt\"",
L"." },
351 { __LINE__,
TRUE,
TRUE,
L"\"notepad.exe\"",
L"." },
352 { __LINE__,
TRUE,
TRUE,
L"\"notepad.exe\"",
L"system32" },
353 { __LINE__,
TRUE,
TRUE,
L"\"notepad.exe\"",
L"C:\\Program Files" },
354 { __LINE__,
TRUE,
TRUE,
L"\"notepad.exe\" \"Test File.txt\"",
NULL },
355 { __LINE__,
TRUE,
TRUE,
L"\"notepad.exe\" \"Test File.txt\"",
L"." },
359 { __LINE__,
FALSE,
FALSE,
L"test program",
L"system32" },
360 { __LINE__,
FALSE,
FALSE,
L"test program",
L"C:\\Program Files" },
362 { __LINE__,
FALSE,
FALSE,
L"test program \"Test File.txt\"",
L"." },
365 { __LINE__,
FALSE,
TRUE,
L"test program",
L"system32" },
366 { __LINE__,
FALSE,
TRUE,
L"test program",
L"C:\\Program Files" },
367 { __LINE__,
FALSE,
TRUE,
L"test program \"Test File.txt\"",
NULL },
368 { __LINE__,
FALSE,
TRUE,
L"test program \"Test File.txt\"",
L"." },
372 { __LINE__,
FALSE,
FALSE,
L"test program.exe",
L"system32" },
373 { __LINE__,
FALSE,
FALSE,
L"test program.exe",
L"C:\\Program Files" },
374 { __LINE__,
FALSE,
FALSE,
L"test program.exe \"Test File.txt\"",
NULL },
375 { __LINE__,
FALSE,
FALSE,
L"test program.exe \"Test File.txt\"",
L"." },
377 { __LINE__,
FALSE,
TRUE,
L"test program.exe",
L"." },
378 { __LINE__,
FALSE,
TRUE,
L"test program.exe",
L"system32" },
379 { __LINE__,
FALSE,
TRUE,
L"test program.exe",
L"C:\\Program Files" },
380 { __LINE__,
FALSE,
TRUE,
L"test program.exe \"Test File.txt\"",
NULL },
381 { __LINE__,
FALSE,
TRUE,
L"test program.exe \"Test File.txt\"",
L"." },
385 { __LINE__,
FALSE,
FALSE,
L"test program.bat",
L"system32" },
386 { __LINE__,
FALSE,
FALSE,
L"test program.bat",
L"C:\\Program Files" },
387 { __LINE__,
FALSE,
FALSE,
L"test program.bat \"Test File.txt\"",
NULL },
388 { __LINE__,
FALSE,
FALSE,
L"test program.bat \"Test File.txt\"",
L"." },
390 { __LINE__,
FALSE,
TRUE,
L"test program.bat",
L"." },
391 { __LINE__,
FALSE,
TRUE,
L"test program.bat",
L"system32" },
392 { __LINE__,
FALSE,
TRUE,
L"test program.bat",
L"C:\\Program Files" },
393 { __LINE__,
FALSE,
TRUE,
L"test program.bat \"Test File.txt\"",
NULL },
394 { __LINE__,
FALSE,
TRUE,
L"test program.bat \"Test File.txt\"",
L"." },
398 { __LINE__,
FALSE,
FALSE,
L"\"test program\"",
L"system32" },
399 { __LINE__,
FALSE,
FALSE,
L"\"test program\"",
L"C:\\Program Files" },
400 { __LINE__,
FALSE,
FALSE,
L"\"test program\" \"Test File.txt\"",
NULL },
401 { __LINE__,
FALSE,
FALSE,
L"\"test program\" \"Test File.txt\"",
L"." },
403 { __LINE__,
FALSE,
TRUE,
L"\"test program\"",
L"." },
404 { __LINE__,
FALSE,
TRUE,
L"\"test program\"",
L"system32" },
405 { __LINE__,
FALSE,
TRUE,
L"\"test program\"",
L"C:\\Program Files" },
406 { __LINE__,
FALSE,
TRUE,
L"\"test program\" \"Test File.txt\"",
NULL },
407 { __LINE__,
FALSE,
TRUE,
L"\"test program\" \"Test File.txt\"",
L"." },
410 { __LINE__,
TRUE,
FALSE,
L"\"test program.exe\"",
L"." },
411 { __LINE__,
TRUE,
FALSE,
L"\"test program.exe\"",
L"system32" },
412 { __LINE__,
TRUE,
FALSE,
L"\"test program.exe\"",
L"C:\\Program Files" },
413 { __LINE__,
TRUE,
FALSE,
L"\"test program.exe\" \"Test File.txt\"",
NULL },
414 { __LINE__,
TRUE,
FALSE,
L"\"test program.exe\" \"Test File.txt\"",
L"." },
416 { __LINE__,
TRUE,
TRUE,
L"\"test program.exe\"",
L"." },
417 { __LINE__,
TRUE,
TRUE,
L"\"test program.exe\"",
L"system32" },
418 { __LINE__,
TRUE,
TRUE,
L"\"test program.exe\"",
L"C:\\Program Files" },
419 { __LINE__,
TRUE,
TRUE,
L"\"test program.exe\" \"Test File.txt\"",
NULL },
420 { __LINE__,
TRUE,
TRUE,
L"\"test program.exe\" \"Test File.txt\"",
L"." },
423 { __LINE__,
FALSE,
FALSE,
L"\"test program.bat\"",
L"." },
424 { __LINE__,
FALSE,
FALSE,
L"\"test program.bat\"",
L"system32" },
425 { __LINE__,
FALSE,
FALSE,
L"\"test program.bat\"",
L"C:\\Program Files" },
426 { __LINE__,
FALSE,
FALSE,
L"\"test program.bat\" \"Test File.txt\"",
NULL },
427 { __LINE__,
FALSE,
FALSE,
L"\"test program.bat\" \"Test File.txt\"",
L"." },
429 { __LINE__,
FALSE,
TRUE,
L"\"test program.bat\"",
L"." },
430 { __LINE__,
FALSE,
TRUE,
L"\"test program.bat\"",
L"system32" },
431 { __LINE__,
FALSE,
TRUE,
L"\"test program.bat\"",
L"C:\\Program Files" },
432 { __LINE__,
FALSE,
TRUE,
L"\"test program.bat\" \"Test File.txt\"",
NULL },
433 { __LINE__,
FALSE,
TRUE,
L"\"test program.bat\" \"Test File.txt\"",
L"." },
437 { __LINE__,
FALSE,
FALSE,
L"invalid program",
L"system32" },
438 { __LINE__,
FALSE,
FALSE,
L"invalid program",
L"C:\\Program Files" },
439 { __LINE__,
FALSE,
FALSE,
L"invalid program \"Test File.txt\"",
NULL },
440 { __LINE__,
FALSE,
FALSE,
L"invalid program \"Test File.txt\"",
L"." },
442 { __LINE__,
FALSE,
TRUE,
L"invalid program",
L"." },
443 { __LINE__,
FALSE,
TRUE,
L"invalid program",
L"system32" },
444 { __LINE__,
FALSE,
TRUE,
L"invalid program",
L"C:\\Program Files" },
445 { __LINE__,
FALSE,
TRUE,
L"invalid program \"Test File.txt\"",
NULL },
446 { __LINE__,
FALSE,
TRUE,
L"invalid program \"Test File.txt\"",
L"." },
449 { __LINE__,
FALSE,
FALSE,
L"\"invalid program.exe\"",
L"." },
450 { __LINE__,
FALSE,
FALSE,
L"\"invalid program.exe\"",
L"system32" },
451 { __LINE__,
FALSE,
FALSE,
L"\"invalid program.exe\"",
L"C:\\Program Files" },
452 { __LINE__,
FALSE,
FALSE,
L"\"invalid program.exe\" \"Test File.txt\"",
NULL },
453 { __LINE__,
FALSE,
FALSE,
L"\"invalid program.exe\" \"Test File.txt\"",
L"." },
455 { __LINE__,
FALSE,
TRUE,
L"\"invalid program.exe\"",
L"." },
456 { __LINE__,
FALSE,
TRUE,
L"\"invalid program.exe\"",
L"system32" },
457 { __LINE__,
FALSE,
TRUE,
L"\"invalid program.exe\"",
L"C:\\Program Files" },
458 { __LINE__,
FALSE,
TRUE,
L"\"invalid program.exe\" \"Test File.txt\"",
NULL },
459 { __LINE__,
FALSE,
TRUE,
L"\"invalid program.exe\" \"Test File.txt\"",
L"." },
461 { __LINE__,
TRUE,
TRUE,
L"::{450d8fba-ad25-11d0-98a8-0800361b1103}",
NULL },
462 { __LINE__,
TRUE,
TRUE,
L"shell:::{450d8fba-ad25-11d0-98a8-0800361b1103}",
NULL },
476 { __LINE__,
FALSE,
FALSE,
L"Test File 1.txt",
L"system32" },
479 { __LINE__,
FALSE,
FALSE,
L"\"Test File 1.txt\"",
L"." },
480 { __LINE__,
FALSE,
FALSE,
L"\"Test File 1.txt\"",
L"system32" },
482 { __LINE__,
FALSE,
FALSE,
L"\"Test File 1.txt\" \"Test File.txt\"",
NULL },
483 { __LINE__,
FALSE,
FALSE,
L"\"Test File 1.txt\" \"Test File.txt\"",
L"." },
484 { __LINE__,
FALSE,
FALSE,
L"\"Test File 1.txt\" \"Test File.txt\"",
L"system32" },
486 { __LINE__,
TRUE,
TRUE,
L"Test File 1.txt",
L"." },
487 { __LINE__,
FALSE,
TRUE,
L"Test File 1.txt",
L"system32" },
490 { __LINE__,
TRUE,
TRUE,
L"\"Test File 1.txt\"",
L"." },
491 { __LINE__,
TRUE,
TRUE,
L"\"Test File 1.txt\"",
L"system32" },
493 { __LINE__,
FALSE,
TRUE,
L"\"Test File 1.txt\" \"Test File.txt\"",
NULL },
494 { __LINE__,
TRUE,
TRUE,
L"\"Test File 1.txt\" \"Test File.txt\"",
L"." },
495 { __LINE__,
TRUE,
TRUE,
L"\"Test File 1.txt\" \"Test File.txt\"",
L"system32" },
500 { __LINE__,
FALSE,
FALSE,
L"Test File 2.bat",
L"system32" },
503 { __LINE__,
FALSE,
FALSE,
L"\"Test File 2.bat\"",
L"." },
504 { __LINE__,
FALSE,
FALSE,
L"\"Test File 2.bat\"",
L"system32" },
506 { __LINE__,
FALSE,
FALSE,
L"\"Test File 2.bat\" \"Test File.txt\"",
NULL },
507 { __LINE__,
FALSE,
FALSE,
L"\"Test File 2.bat\" \"Test File.txt\"",
L"." },
508 { __LINE__,
FALSE,
FALSE,
L"\"Test File 2.bat\" \"Test File.txt\"",
L"system32" },
511 { __LINE__,
FALSE,
TRUE,
L"Test File 2.bat",
L"." },
512 { __LINE__,
FALSE,
TRUE,
L"Test File 2.bat",
L"system32" },
515 { __LINE__,
FALSE,
TRUE,
L"\"Test File 2.bat\"",
L"." },
516 { __LINE__,
FALSE,
TRUE,
L"\"Test File 2.bat\"",
L"system32" },
518 { __LINE__,
FALSE,
TRUE,
L"\"Test File 2.bat\" \"Test File.txt\"",
NULL },
519 { __LINE__,
FALSE,
TRUE,
L"\"Test File 2.bat\" \"Test File.txt\"",
L"." },
520 { __LINE__,
FALSE,
TRUE,
L"\"Test File 2.bat\" \"Test File.txt\"",
L"system32" },
529 { __LINE__,
FALSE,
FALSE,
L"Test File 1.txt",
L"system32" },
532 { __LINE__,
FALSE,
FALSE,
L"\"Test File 1.txt\"",
L"." },
533 { __LINE__,
FALSE,
FALSE,
L"\"Test File 1.txt\"",
L"system32" },
535 { __LINE__,
FALSE,
FALSE,
L"\"Test File 1.txt\" \"Test File.txt\"",
NULL },
536 { __LINE__,
FALSE,
FALSE,
L"\"Test File 1.txt\" \"Test File.txt\"",
L"." },
537 { __LINE__,
FALSE,
FALSE,
L"\"Test File 1.txt\" \"Test File.txt\"",
L"system32" },
540 { __LINE__,
TRUE,
TRUE,
L"Test File 1.txt",
L"." },
541 { __LINE__,
FALSE,
TRUE,
L"Test File 1.txt",
L"system32" },
544 { __LINE__,
TRUE,
TRUE,
L"\"Test File 1.txt\"",
L"." },
545 { __LINE__,
TRUE,
TRUE,
L"\"Test File 1.txt\"",
L"system32" },
547 { __LINE__,
TRUE,
TRUE,
L"\"Test File 1.txt\" \"Test File.txt\"",
NULL },
548 { __LINE__,
TRUE,
TRUE,
L"\"Test File 1.txt\" \"Test File.txt\"",
L"." },
549 { __LINE__,
TRUE,
TRUE,
L"\"Test File 1.txt\" \"Test File.txt\"",
L"system32" },
554 { __LINE__,
FALSE,
FALSE,
L"Test File 2.bat",
L"system32" },
557 { __LINE__,
FALSE,
FALSE,
L"\"Test File 2.bat\"",
L"." },
558 { __LINE__,
FALSE,
FALSE,
L"\"Test File 2.bat\"",
L"system32" },
560 { __LINE__,
FALSE,
FALSE,
L"\"Test File 2.bat\" \"Test File.txt\"",
NULL },
561 { __LINE__,
FALSE,
FALSE,
L"\"Test File 2.bat\" \"Test File.txt\"",
L"." },
562 { __LINE__,
FALSE,
FALSE,
L"\"Test File 2.bat\" \"Test File.txt\"",
L"system32" },
565 { __LINE__,
FALSE,
TRUE,
L"Test File 2.bat",
L"." },
566 { __LINE__,
FALSE,
TRUE,
L"Test File 2.bat",
L"system32" },
569 { __LINE__,
FALSE,
TRUE,
L"\"Test File 2.bat\"",
L"." },
570 { __LINE__,
FALSE,
TRUE,
L"\"Test File 2.bat\"",
L"system32" },
572 { __LINE__,
FALSE,
TRUE,
L"\"Test File 2.bat\" \"Test File.txt\"",
NULL },
573 { __LINE__,
FALSE,
TRUE,
L"\"Test File 2.bat\" \"Test File.txt\"",
L"." },
574 { __LINE__,
FALSE,
TRUE,
L"\"Test File 2.bat\" \"Test File.txt\"",
L"system32" },
653 ok(
result ==
pEntry->result,
"Line %d: result expected %d, was %d\n",
667 skip(
"ShellExecCmdLine is not available on this platform\n");
675 skip(
"ShellExecCmdLine is not found\n");
682 skip(
"shell32_apitest_sub.exe is not found\n");
689 skip(
"EnumWindows failed\n");
700 skip(
"Please retry with admin rights\n");
715 fp =
fopen(
"Test File 1.txt",
"wb");
716 ok(fp !=
NULL,
"failed to create a test file\n");
721 fp =
fopen(
"Test File 2.bat",
"wb");
722 ok(fp !=
NULL,
"failed to create a test file\n");
746 ok(
DeleteFileA(
"Test File 1.txt"),
"failed to delete the test file\n");
747 ok(
DeleteFileA(
"Test File 2.bat"),
"failed to delete the test file\n");
static BOOL GetSubProgramPath(void)
static const WCHAR wszExe[]
struct TEST_ENTRY TEST_ENTRY
static const WCHAR wszOpen[]
DWORD WINAPI GetModuleFileNameW(HINSTANCE hModule, LPWSTR lpFilename, DWORD nSize)
BOOL WINAPI PathRemoveFileSpecW(LPWSTR lpszPath)
BOOL WINAPI PathIsRelativeW(LPCWSTR lpszPath)
VOID WINAPI DECLSPEC_HOTPATCH Sleep(IN DWORD dwMilliseconds)
#define HRESULT_FROM_WIN32(x)
VOID WINAPI CoTaskMemFree(LPVOID ptr)
_Check_return_ _CRTIMP FILE *__cdecl _wfopen(_In_z_ const wchar_t *_Filename, _In_z_ const wchar_t *_Mode)
static __inline void __SHCloneStrW(WCHAR **target, const WCHAR *source)
static HWND DoWaitForWindow(LPCWSTR clsname, LPCWSTR text, BOOL bClosing, BOOL bForce)
HRESULT(WINAPI * SHELLEXECCMDLINE)(HWND, LPCWSTR, LPCWSTR, INT, LPVOID, DWORD)
#define EXCEPTION_ACCESS_VIOLATION
#define GetCurrentDirectoryW(x, y)
#define EXCEPTION_NONCONTINUABLE
BOOL WINAPI PathFileExistsA(LPCSTR lpszPath)
DWORD WINAPI GetLastError(VOID)
DWORD WINAPI GetFullPathNameW(IN LPCWSTR lpFileName, IN DWORD nBufferLength, OUT LPWSTR lpBuffer, OUT LPWSTR *lpFilePart)
static void CleanupNewlyCreatedWindows(void)
static const WCHAR wszCom[]
BOOL WINAPI GetBinaryTypeW(LPCWSTR lpApplicationName, LPDWORD lpBinaryType)
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
UINT WINAPI GetWindowsDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
BOOL WINAPI PathAppendW(LPWSTR lpszPath, LPCWSTR lpszAppend)
START_TEST(ShellExecCmdLine)
LPWSTR WINAPI PathAddBackslashW(LPWSTR lpszPath)
DWORD WINAPI GetFileAttributesW(LPCWSTR lpFileName)
static struct _test_info info[]
STRSAFEAPI StringCchCopyW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc)
BOOL WINAPI DeleteFileW(IN LPCWSTR lpFileName)
#define ok_int(expression, result)
#define SEE_MASK_FLAG_NO_UI
BOOL WINAPI DeleteFileA(IN LPCSTR lpFileName)
#define SECL_ALLOW_NONEXE
BOOL WINAPI DECLSPEC_HOTPATCH ShellExecuteExW(LPSHELLEXECUTEINFOW sei)
BOOL WINAPI PathFileExistsW(LPCWSTR lpszPath)
VERSIONHELPERAPI IsWindowsVistaOrGreater()
static BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
HRESULT WINAPI AssocQueryStringW(ASSOCF cfFlags, ASSOCSTR str, LPCWSTR pszAssoc, LPCWSTR pszExtra, LPWSTR pszOut, DWORD *pcchOut)
#define ERROR_FILE_NOT_FOUND
static const TEST_ENTRY s_entries_2[]
SHELLEXECCMDLINE g_pShellExecCmdLine
int WINAPI MessageBoxW(_In_opt_ HWND, _In_opt_ LPCWSTR, _In_opt_ LPCWSTR, _In_ UINT)
BOOL WINAPI CopyFileW(IN LPCWSTR lpExistingFileName, IN LPCWSTR lpNewFileName, IN BOOL bFailIfExists)
#define EXCEPTION_EXECUTE_HANDLER
static LPCWSTR SplitParams(LPCWSTR psz, LPWSTR pszArg0, size_t cchArg0)
#define SEE_MASK_DOENVSUBST
#define IDS_FILE_NOT_FOUND
#define INVALID_FILE_ATTRIBUTES
BOOL WINAPI EnumWindows(_In_ WNDENUMPROC lpEnumFunc, _In_ LPARAM lParam)
BOOL WINAPI DECLSPEC_HOTPATCH SetEnvironmentVariableW(IN LPCWSTR lpName, IN LPCWSTR lpValue)
static WCHAR s_sub_program[MAX_PATH]
static const TEST_ENTRY s_entries_1[]
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
_Check_return_opt_ _CRTIMP int __cdecl fclose(_Inout_ FILE *_File)
_Check_return_ _CRTIMP FILE *__cdecl fopen(_In_z_ const char *_Filename, _In_z_ const char *_Mode)
static WCHAR s_win_test_exe[MAX_PATH]
DWORD WINAPI SearchPathW(IN LPCWSTR lpPath OPTIONAL, IN LPCWSTR lpFileName, IN LPCWSTR lpExtension OPTIONAL, IN DWORD nBufferLength, OUT LPWSTR lpBuffer, OUT LPWSTR *lpFilePart OPTIONAL)
#define shell32_hInstance
VOID WINAPI RaiseException(IN DWORD dwExceptionCode, IN DWORD dwExceptionFlags, IN DWORD nNumberOfArguments, IN CONST ULONG_PTR *lpArguments OPTIONAL)
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
#define SEE_MASK_FLAG_LOG_USAGE
BOOL WINAPI SetCurrentDirectoryW(IN LPCWSTR lpPathName)
STRSAFEAPI StringCchPrintfW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszFormat,...)
UINT WINAPI GetSystemDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
static void DoEntry(const TEST_ENTRY *pEntry)
static WCHAR s_sys_bat_file[MAX_PATH]
BOOL WINAPI StrTrimW(LPWSTR lpszStr, LPCWSTR lpszTrim)
void WINAPI SHFree(LPVOID pv)
BOOL WINAPI PostMessageW(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define SEE_MASK_INVOKEIDLIST
#define GetProcAddress(x, y)
#define _SEH2_EXCEPT(...)
LPVOID WINAPI SHAlloc(SIZE_T len)
static WCHAR s_cur_dir[MAX_PATH]
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize