33#define MY_LAST_ERROR ((DWORD)-1)
34#define EXPECT_BAD_PATH__NOT_FOUND \
35 ok( (ERROR_PATH_NOT_FOUND == GetLastError()) || \
36 (ERROR_RESOURCE_DATA_NOT_FOUND == GetLastError()) || \
37 (ERROR_FILE_NOT_FOUND == GetLastError()) || \
38 (ERROR_BAD_PATHNAME == GetLastError()) || \
39 (ERROR_SUCCESS == GetLastError()), \
40 "Last error wrong! ERROR_RESOURCE_DATA_NOT_FOUND/ERROR_BAD_PATHNAME (98)/" \
41 "ERROR_PATH_NOT_FOUND (NT4)/ERROR_FILE_NOT_FOUND (2k3) " \
42 "ERROR_SUCCESS (2k) expected, got %u\n", GetLastError());
43#define EXPECT_INVALID__NOT_FOUND \
44 ok( (ERROR_PATH_NOT_FOUND == GetLastError()) || \
45 (ERROR_RESOURCE_DATA_NOT_FOUND == GetLastError()) || \
46 (ERROR_FILE_NOT_FOUND == GetLastError()) || \
47 (ERROR_INVALID_PARAMETER == GetLastError()) || \
48 (ERROR_SUCCESS == GetLastError()), \
49 "Last error wrong! ERROR_RESOURCE_DATA_NOT_FOUND/ERROR_INVALID_PARAMETER (98)/" \
50 "ERROR_PATH_NOT_FOUND (NT4)/ERROR_FILE_NOT_FOUND (2k3) " \
51 "ERROR_SUCCESS (2k) expected, got %u\n", GetLastError());
72 "GetFileVersionInfoSizeA result wrong! 0L expected, got 0x%08x\n",
80 "GetFileVersionInfoSizeA result wrong! 0L expected, got 0x%08x\n",
84 "Handle wrong! 0L expected, got 0x%08x\n", hdl);
89 "GetFileVersionInfoSizeA result wrong! 0L expected, got 0x%08x\n",
97 "GetFileVersionInfoSizeA result wrong! 0L expected, got 0x%08x\n",
101 "Handle wrong! 0L expected, got 0x%08x\n", hdl);
106 "GetFileVersionInfoSizeA result wrong! <> 0L expected, got 0x%08x\n",
109 "Last error wrong! NO_ERROR/0x%08x (NT4) expected, got %u\n",
116 "GetFileVersionInfoSizeA result wrong! <> 0L expected, got 0x%08x\n",
119 "Last error wrong! NO_ERROR/0x%08x (NT4) expected, got %u\n",
122 "Handle wrong! 0L expected, got 0x%08x\n", hdl);
127 "GetFileVersionInfoSizeA result wrong! 0L expected, got 0x%08x\n",
133 "Last error wrong! ERROR_FILE_NOT_FOUND/ERROR_RESOURCE_DATA_NOT_FOUND "
142 "GetFileVersionInfoSizeA result wrong! <> 0L expected, got 0x%08x\n",
145 "Last error wrong! NO_ERROR/0x%08x (NT4) expected, got %u\n",
148 "Handle wrong! 0L expected, got 0x%08x\n", hdl);
151 trace(
"skipping GetModuleFileNameA(NULL,..) failed\n");
164 "GetFileVersionInfoSizeA result wrong! <> 0L expected, got 0x%08x\n",
167 "Last error wrong! NO_ERROR/0x%08x (NT4) expected, got %u\n",
170 "Handle wrong! 0L expected, got 0x%08x\n", hdl);
174 trace(
"skipping GetSystemDirectoryA(mypath,..) failed\n");
183 ok(hdl == 0,
"Expected 0, got %d\n", hdl);
186 "Expected ERROR_RESOURCE_DATA_NOT_FOUND, got %d\n",
GetLastError());
211 static const char backslash[] =
"\\";
218 "GetFileVersionInfoSizeA result wrong! <> 0L expected, got 0x%08x\n",
221 "Last error wrong! NO_ERROR/0x%08x (NT4) expected, got %u\n",
224 "Handle wrong! 0L expected, got 0x%08x\n", hdl);
226 if (
retval == 0 || hdl != 0)
230 ok(pVersionInfo != 0,
"HeapAlloc failed\n" );
231 if (pVersionInfo == 0)
239 ok (!boolret,
"GetFileVersionInfoA should have failed: GetLastError = %u\n",
GetLastError());
242 "Last error wrong! ERROR_INVALID_DATA/ERROR_BAD_PATHNAME (ME)/"
243 "NO_ERROR (95) expected, got %u\n",
248 ok (boolret,
"GetFileVersionInfoA failed: GetLastError = %u\n",
GetLastError());
254 "VerQueryValueA failed: GetLastError = %u\n",
GetLastError());
257 ok (boolret,
"VerQueryValueA failed: GetLastError = %u\n",
GetLastError());
260 ok (boolret,
"VerQueryValueA failed: GetLastError = %u\n",
GetLastError());
269 trace(
"kernel32.dll version: %s\n", VersionString);
276 ok (boolret,
"VerQueryValue failed: GetLastError = %u\n",
GetLastError());
286 DWORD hdlW, retvalW = 0;
292 UINT uiLengthA, uiLengthW;
298 char varfileinfoA[] =
"\\VarFileInfo\\Translation";
299 WCHAR varfileinfoW[] = {
'\\',
'V',
'a',
'r',
'F',
'i',
'l',
'e',
'I',
'n',
'f',
'o',
300 '\\',
'T',
'r',
'a',
'n',
's',
'l',
'a',
't',
'i',
'o',
'n', 0 };
301 char WineVarFileInfoA[] = { 0x09, 0x04, 0xE4, 0x04 };
302 char FileDescriptionA[] =
"\\StringFileInfo\\040904E4\\FileDescription";
303 WCHAR FileDescriptionW[] = {
'\\',
'S',
't',
'r',
'i',
'n',
'g',
'F',
'i',
'l',
'e',
'I',
'n',
'f',
'o',
304 '\\',
'0',
'4',
'0',
'9',
'0',
'4',
'E',
'4',
305 '\\',
'F',
'i',
'l',
'e',
'D',
'e',
's',
'c',
'r',
'i',
'p',
't',
'i',
'o',
'n', 0 };
306 char WineFileDescriptionA[] =
"FileDescription";
307 WCHAR WineFileDescriptionW[] = {
'F',
'i',
'l',
'e',
'D',
'e',
's',
'c',
'r',
'i',
'p',
't',
'i',
'o',
'n', 0 };
336 win_skip(
"GetModuleFileNameW not existing on this platform, skipping comparison between A- and W-calls\n");
345 ok(retW,
"GetFileVersionInfo failed: GetLastError = %u\n",
GetLastError());
352 ok(retA,
"GetFileVersionInfo failed: GetLastError = %u\n",
GetLastError());
356 ok( retvalA == retvalW,
"The size of the struct should be the same for both A/W calls, it is (%d) vs. (%d)\n",
358 ok( !
memcmp(pVersionInfoA, pVersionInfoW, retvalA),
"Both structs should be the same, they aren't\n");
390 ok ( retvalW == ((vvis->
wLength * 2) + 4) || retvalW == (vvis->
wLength * 1.5),
391 "Structure is not of the correct size\n");
401 ok (retA,
"VerQueryValueA failed: GetLastError = %u\n",
GetLastError());
402 ok ( uiLengthA ==
sizeof(
VS_FIXEDFILEINFO),
"Size (%d) doesn't match the size of the VS_FIXEDFILEINFO struct\n", uiLengthA);
409 ok (retW,
"VerQueryValueW failed: GetLastError = %u\n",
GetLastError());
413 ok (retW,
"VerQueryValueW failed: GetLastError = %u\n",
GetLastError());
416 ok (retW,
"VerQueryValueW failed: GetLastError = %u\n",
GetLastError());
417 ok ( uiLengthW ==
sizeof(
VS_FIXEDFILEINFO),
"Size (%d) doesn't match the size of the VS_FIXEDFILEINFO struct\n", uiLengthW );
419 ok( uiLengthA == uiLengthW,
"The size of VS_FIXEDFILEINFO should be the same for both A/W calls, it is (%d) vs. (%d)\n",
420 uiLengthA, uiLengthW);
421 ok( !
memcmp(pBufA, pBufW, uiLengthA),
"Both values should be the same, they aren't\n");
427 ok (retA,
"VerQueryValueA failed: GetLastError = %u\n",
GetLastError());
428 ok( !
memcmp(pBufA, WineVarFileInfoA, uiLengthA),
"The VarFileInfo should have matched 0904e404 (non case sensitive)\n");
433 ok (retW,
"VerQueryValueW failed: GetLastError = %u\n",
GetLastError());
434 ok( uiLengthA == uiLengthW,
"The size of the VarFileInfo information should be the same for both A/W calls, it is (%d) vs. (%d)\n",
435 uiLengthA, uiLengthW);
436 ok( !
memcmp(pBufA, pBufW, uiLengthA),
"Both values should be the same, they aren't\n");
442 ok (retA,
"VerQueryValueA failed: GetLastError = %u\n",
GetLastError());
443 ok( !
lstrcmpA(WineFileDescriptionA, pBufA),
"expected '%s' got '%s'\n",
444 WineFileDescriptionA, pBufA);
448 ok (retA,
"VerQueryValueA failed: GetLastError = %u\n",
GetLastError());
449 ok( !
lstrcmpA(WineFileDescriptionA, pBufA),
"expected '%s' got '%s'\n",
450 WineFileDescriptionA, pBufA);
455 ok (retW,
"VerQueryValueW failed: GetLastError = %u\n",
GetLastError());
456 ok( !
lstrcmpW(WineFileDescriptionW, pBufW),
"FileDescription should have been '%s'\n", WineFileDescriptionA);
466 static const char *
const value_name[] = {
467 "Product",
"CompanyName",
"FileDescription",
"Internal",
468 "ProductVersion",
"InternalName",
"File",
"LegalCopyright",
469 "FileVersion",
"Legal",
"OriginalFilename",
"ProductName",
470 "Company",
"Original" };
489 p = (
char *)0xdeadbeef;
494 ok(
len == 4,
"VerQueryValue returned %u, expected 4\n",
len);
496 translation = *(
UINT *)
p;
499 p = (
char *)0xdeadbeef;
503 ok(!
ret,
"VerQueryValue should fail\n");
507 ok(
p == (
char *)0xdeadbeef,
"expected 0xdeadbeef got %p\n",
p);
508 ok(
len == 0,
"expected 0 got %x\n",
len);
510 p = (
char *)0xdeadbeef;
515 ok(
len == 0,
"VerQueryValue returned %u, expected 0\n",
len);
516 ok(
p != (
char *)0xdeadbeef,
"not expected 0xdeadbeef\n");
518 p = (
char *)0xdeadbeef;
523 ok(
len == 0,
"VerQueryValue returned %u, expected 0\n",
len);
524 ok(
p != (
char *)0xdeadbeef,
"not expected 0xdeadbeef\n");
526 p = (
char *)0xdeadbeef;
531 ok(
len == 0,
"VerQueryValue returned %u, expected 0\n",
len);
532 ok(
p != (
char *)0xdeadbeef,
"not expected 0xdeadbeef\n");
534 p = (
char *)0xdeadbeef;
539 ok(
len == 0,
"VerQueryValue returned %u, expected 0\n",
len);
540 ok(
p != (
char *)0xdeadbeef,
"not expected 0xdeadbeef\n");
542 sprintf(
buf,
"\\StringFileInfo\\%08x", translation);
543 p = (
char *)0xdeadbeef;
548 ok(
len == 0,
"VerQueryValue returned %u, expected 0\n",
len);
549 ok(
p != (
char *)0xdeadbeef,
"not expected 0xdeadbeef\n");
553 sprintf(
buf,
"\\StringFileInfo\\%08x\\%s", translation, value_name[
i]);
554 p = (
char *)0xdeadbeef;
559 ok(
len ==
strlen(value_name[
i]) + 1,
"VerQueryValue returned %u\n",
len);
560 ok(!
strcmp(value_name[
i],
p),
"expected \"%s\", got \"%s\"\n",
566 p = (
char *)0xdeadbeef;
570 ok(!
ret,
"VerQueryValueA(%s) succeeded\n",
buf);
574 ok(
p == (
char *)0xdeadbeef,
"expected 0xdeadbeef got %p\n",
p);
575 ok(
len == 0,
"expected 0 or 0xbeef, got %x\n",
len);
600 char preparedbuffer[] = {
606 0x56, 0x00, 0x53, 0x00, 0x5f, 0x00, 0x56, 0x00, 0x45, 0x00, 0x52, 0x00, 0x53, 0x00, 0x49, 0x00, 0x4f,
607 0x00, 0x4e, 0x00, 0x5f, 0x00, 0x49, 0x00, 0x4e, 0x00, 0x46, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00,
610 0xbd, 0x04, 0xef, 0xfe,
611 0x00, 0x00, 0x01, 0x00,
612 0x00, 0x00, 0x01, 0x00,
613 0x00, 0x00, 0x00, 0x00,
614 0x00, 0x00, 0x01, 0x00,
615 0x00, 0x00, 0x00, 0x00,
616 0x3f, 0x00, 0x00, 0x00,
617 0x00, 0x00, 0x00, 0x00,
618 0x00, 0x00, 0x00, 0x00,
619 0x01, 0x00, 0x00, 0x00,
620 0x00, 0x00, 0x00, 0x00,
621 0x00, 0x00, 0x00, 0x00,
622 0x00, 0x00, 0x00, 0x00,
629 0x53, 0x00, 0x74, 0x00, 0x72, 0x00, 0x69, 0x00, 0x6e, 0x00, 0x67, 0x00, 0x46, 0x00, 0x69, 0x00,
630 0x6c, 0x00, 0x65, 0x00, 0x49, 0x00, 0x6e, 0x00, 0x66, 0x00, 0x6f, 0x00, 0x00, 0x00,
632 0x46, 0x45, 0x32, 0x58,
635 0x0d, 0xf0, 0xad, 0xba, 0x0d, 0xf0, 0xad, 0xba, 0x0d, 0xf0, 0xad, 0xba, 0x0d, 0xf0, 0xad, 0xba,
636 0x0d, 0xf0, 0xad, 0xba, 0x0d, 0xf0, 0xad, 0xba, 0x0d, 0xf0, 0xad, 0xba, 0x0d, 0xf0, 0xad, 0xba,
637 0x0d, 0xf0, 0xad, 0xba, 0x0d, 0xf0, 0xad, 0xba, 0x0d, 0xf0, 0xad, 0xba, 0x0d, 0xf0, 0xad, 0xba,
638 0x0d, 0xf0, 0xad, 0xba, 0x0d, 0xf0, 0xad, 0xba, 0x0d, 0xf0, 0xad, 0xba, 0x0d, 0xf0, 0xad, 0xba,
639 0x0d, 0xf0, 0xad, 0xba, 0x0d, 0xf0, 0xad, 0xba, 0x0d, 0xf0, 0xad, 0xba, 0x0d, 0xf0, 0xad, 0xba,
640 0x0d, 0xf0, 0xad, 0xba, 0x0d, 0xf0, 0xad, 0xba, 0x0d, 0xf0, 0xad, 0xba, 0x0d, 0xf0, 0xad, 0xba,
641 0x0d, 0xf0, 0xad, 0xba, 0x0d, 0xf0, 0xad, 0xba, 0x0d, 0xf0, 0xad, 0xba, 0x0d, 0xf0, 0xad, 0xba,
642 0x0d, 0xf0, 0xad, 0xba, 0x0d, 0xf0, 0xad, 0xba, 0x0d, 0xf0, 0xad, 0xba, 0x0d, 0xf0, 0xad, 0xba,
646 WCHAR FileDescriptionW[] = {
'\\',
'\\',
'S',
't',
'r',
'i',
'n',
'g',
'F',
'i',
'l',
'e',
'I',
'n',
'f',
'o', 0 };
648 p = (
char *)0xdeadbeef;
653 ok(
len == 0,
"VerQueryValueA returned %u, expected 0\n",
len);
655 ok(
p == preparedbuffer + 0x7e,
"p was %p, expected %p\n",
p, preparedbuffer + 0x7e);
657 p = (
char *)0xdeadbeef;
662 ok(
len == 0,
"VerQueryValueA returned %u, expected 0\n",
len);
664 ok(
p == preparedbuffer + 0x7e,
"p was %p, expected %p\n",
p, preparedbuffer + 0x7e);
666 p = (
char *)0xdeadbeef;
671 ok(
len == 0,
"VerQueryValueA returned %u, expected 0\n",
len);
673 ok(
p == preparedbuffer + 0x7e,
"p was %p, expected %p\n",
p, preparedbuffer + 0x7e);
676 p = (
char *)0xdeadbeef;
681 ok(
len == 0,
"VerQueryValueW returned %u, expected 0\n",
len);
683 ok(
p == preparedbuffer + 0x7e,
"p was %p, expected %p\n",
p, preparedbuffer + 0x7e);
685 p = (
char *)0xdeadbeef;
690 ok(
len == 0,
"VerQueryValueW returned %u, expected 0\n",
len);
692 ok(
p == preparedbuffer + 0x7e,
"p was %p, expected %p\n",
p, preparedbuffer + 0x7e);
694 p = (
char *)0xdeadbeef;
699 ok(
len == 0,
"VerQueryValueW returned %u, expected 0\n",
len);
701 ok(
p == preparedbuffer + 0x7e,
"p was %p, expected %p\n",
p, preparedbuffer + 0x7e);
706 WORD extra_block[] = {
707 72, 0, 0,
'W',
'i',
'n',
'e',
'T',
'e',
's',
't',
'\0',
708 24, 4, 0,
'B',
'i',
'n',
'a',
'r',
'y',
'\0', 0xbeef, 0xdead,
709 24, 4, 1,
'T',
'e',
'x',
't',
'\0',
'B',
'-',
')',
'\0',
718 ok(
ret,
"GetModuleFileNameA failed\n");
724 ok(ver !=
NULL,
"Can't allocate memory\n");
731 memcpy(ver + *
length, extra_block,
sizeof(extra_block));
732 *
length +=
sizeof(extra_block);
734 p = (
char *)0xdeadbeef;
739 ok(
len == 4,
"VerQueryValue returned %u, expected 4\n",
len);
740 ok(
p != (
char *)0xdeadbeef,
"not expected 0xdeadbeef\n");
743 p = (
char *)0xdeadbeef;
747 ok(
len == 4,
"VerQueryValue returned %u, expected 4\n",
len);
748 ok(
p != (
char *)0xdeadbeef,
"not expected 0xdeadbeef\n");
749 ok(
strcmp(
p,
"B-)") == 0,
"got '%s', expected '%s'\n",
p,
"B-)");
764 const WORD unicode = 1200;
765 const WCHAR kernel32W[] = {
'k',
'e',
'r',
'n',
'e',
'l',
'3',
'2',
'.',
'd',
'l',
'l',0};
766 const DWORD test_flags[] = {
780 skip(
"Translation is not available\n");
794 translation = *(
UINT *)
p;
796 ok(
size == 4,
"VerQueryValue returned %u, expected 4\n",
size);
799 ok(
LOWORD(translation) ==
lang,
"got %u, expected lang is %u\n",
801 ok(
HIWORD(translation) == unicode,
"got %u, expected codepage is %u\n",
802 HIWORD(translation), unicode);
811 pGetFileVersionInfoSizeExW = (
void *)
GetProcAddress(
mod,
"GetFileVersionInfoSizeExW");
812 if (!pGetFileVersionInfoExW && !pGetFileVersionInfoSizeExW)
814 win_skip(
"GetFileVersionInfoEx family is not available\n");
820 size = pGetFileVersionInfoSizeExW(test_flags[
i], kernel32W,
NULL);
826 ret = pGetFileVersionInfoExW(test_flags[
i], kernel32W, 0,
size, ver);
831 ok(
size == 4,
"[%u] VerQueryValue returned %u, expected 4\n",
i,
size);
832 translation = *(
UINT *)
p;
836 ok(
LOWORD(translation) ==
lang,
"[%u] got %u, expected lang is %u\n",
839 ok(
LOWORD(translation) ==
english,
"[%u] got %u, expected lang is %u\n",
841 ok(
HIWORD(translation) == unicode,
"[%u] got %u, expected codepage is %u\n",
842 i,
HIWORD(translation), unicode);
846 sprintf(
desc,
"\\StringFileInfo\\%04x%04x\\FileDescription",
std::map< E_MODULE, HMODULE > mod
int strcmp(const char *String1, const char *String2)
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
ACPI_SIZE strlen(const char *String)
static const WCHAR rootW[]
#define ERROR_CALL_NOT_IMPLEMENTED
#define GetProcAddress(x, y)
#define INVALID_HANDLE_VALUE
#define CreateFileA(a, b, c, d, e, f, g)
#define HeapFree(x, y, z)
static void cleanup(void)
BOOL WINAPI DeleteFileA(IN LPCSTR lpFileName)
DWORD WINAPI GetFileAttributesA(LPCSTR lpFileName)
BOOL WINAPI WriteFile(IN HANDLE hFile, IN LPCVOID lpBuffer, IN DWORD nNumberOfBytesToWrite OPTIONAL, OUT LPDWORD lpNumberOfBytesWritten, IN LPOVERLAPPED lpOverlapped OPTIONAL)
DWORD WINAPI GetModuleFileNameW(HINSTANCE hModule, LPWSTR lpFilename, DWORD nSize)
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
DWORD WINAPI GetModuleFileNameA(HINSTANCE hModule, LPSTR lpFilename, DWORD nSize)
UINT WINAPI GetSystemDirectoryA(OUT LPSTR lpBuffer, IN UINT uSize)
HRSRC WINAPI FindResourceExA(HMODULE hModule, LPCSTR type, LPCSTR name, WORD lang)
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
LANGID WINAPI GetUserDefaultUILanguage(void)
int WINAPI lstrcmpA(LPCSTR str1, LPCSTR str2)
DWORD WINAPI GetFileVersionInfoSizeA(LPCSTR filename, LPDWORD handle)
BOOL WINAPI VerQueryValueA(LPCVOID pBlock, LPCSTR lpSubBlock, LPVOID *lplpBuffer, PUINT puLen)
BOOL WINAPI GetFileVersionInfoW(LPCWSTR filename, DWORD handle, DWORD datasize, LPVOID data)
BOOL WINAPI GetFileVersionInfoA(LPCSTR filename, DWORD handle, DWORD datasize, LPVOID data)
BOOL WINAPI VerQueryValueW(LPCVOID pBlock, LPCWSTR lpSubBlock, LPVOID *lplpBuffer, PUINT puLen)
DWORD WINAPI GetFileVersionInfoSizeW(LPCWSTR filename, LPDWORD handle)
GLboolean GLboolean GLboolean b
GLenum GLuint GLenum GLsizei const GLchar * buf
GLuint GLsizei GLsizei * length
GLboolean GLboolean GLboolean GLboolean a
GLubyte GLubyte GLubyte GLubyte w
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[]
unsigned long long DWORDLONG
LPSTR WINAPI lstrcatA(LPSTR lpString1, LPCSTR lpString2)
int WINAPI lstrlenA(LPCSTR lpString)
#define memcpy(s1, s2, n)
#define ERROR_FILE_NOT_FOUND
#define sprintf(buf, format,...)
static const WCHAR desc[]
#define create_file(name, size)
static BOOL is_unicode_enabled
static void test_extra_block(void)
static void test_GetFileVersionInfoEx(void)
static void test_32bit_win(void)
#define EXPECT_BAD_PATH__NOT_FOUND
#define EXPECT_INVALID__NOT_FOUND
static void test_info(void)
static void test_VerQueryValue_InvalidLength(void)
static void test_VerQueryValueA(void)
static void VersionDwordLong2String(DWORDLONG Version, LPSTR lpszVerString)
static void test_info_size(void)
#define FILE_VER_GET_LOCALISED
#define FILE_VER_GET_NEUTRAL
#define INVALID_FILE_ATTRIBUTES
static const WCHAR lang[]
static const LCID english
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID _Out_ PINTERFACE _In_ USHORT _In_ USHORT Version
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
DWORD WINAPI GetLastError(void)
#define ERROR_BAD_PATHNAME
#define ERROR_RESOURCE_TYPE_NOT_FOUND
#define ERROR_RESOURCE_DATA_NOT_FOUND
#define ERROR_INVALID_DATA