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");
182 ok(retval == 0,
"Expected 0, got %d\n", retval);
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());
264 dwlVersion = (((
DWORDLONG)pFixedVersionInfo->dwFileVersionMS) << 32) +
265 pFixedVersionInfo->dwFileVersionLS;
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",
_In_opt_ ULONG _Out_ PULONG Value
struct _VS_VERSION_INFO_STRUCT32 VS_VERSION_INFO_STRUCT32
DWORD WINAPI GetModuleFileNameW(HINSTANCE hModule, LPWSTR lpFilename, DWORD nSize)
BOOL WINAPI WriteFile(IN HANDLE hFile, IN LPCVOID lpBuffer, IN DWORD nNumberOfBytesToWrite OPTIONAL, OUT LPDWORD lpNumberOfBytesWritten, IN LPOVERLAPPED lpOverlapped OPTIONAL)
LANGID WINAPI GetUserDefaultUILanguage(void)
IN PVOID IN PVOID IN USHORT Version
GLubyte GLubyte GLubyte GLubyte w
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
static void test_GetFileVersionInfoEx(void)
ACPI_SIZE strlen(const char *String)
GLenum GLuint GLenum GLsizei const GLchar * buf
#define FILE_VER_GET_NEUTRAL
static const WCHAR rootW[]
int WINAPI lstrcmpW(LPCWSTR lpString1, LPCWSTR lpString2)
UINT WINAPI GetSystemDirectoryA(OUT LPSTR lpBuffer, IN UINT uSize)
#define INVALID_HANDLE_VALUE
int WINAPI lstrcmpA(LPCSTR lpString1, LPCSTR lpString2)
DWORD WINAPI GetLastError(VOID)
BOOL WINAPI VerQueryValueA(LPCVOID pBlock, LPCSTR lpSubBlock, LPVOID *lplpBuffer, PUINT puLen)
DWORD WINAPI GetModuleFileNameA(HINSTANCE hModule, LPSTR lpFilename, DWORD nSize)
#define EXPECT_BAD_PATH__NOT_FOUND
#define sprintf(buf, format,...)
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
DWORD WINAPI GetFileAttributesA(LPCSTR lpFileName)
static const WCHAR desc[]
HRSRC WINAPI FindResourceExA(HMODULE hModule, LPCSTR type, LPCSTR name, WORD lang)
BOOL WINAPI DeleteFileA(IN LPCSTR lpFileName)
#define ERROR_FILE_NOT_FOUND
static void test_VerQueryValueA(void)
static const WCHAR lang[]
LPSTR WINAPI lstrcatA(LPSTR lpString1, LPCSTR lpString2)
GLboolean GLboolean GLboolean b
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
GLenum GLuint GLenum GLsizei length
DWORD WINAPI GetFileVersionInfoSizeA(LPCSTR filename, LPDWORD handle)
static void test_info(void)
#define INVALID_FILE_ATTRIBUTES
static void test_VerQueryValue_InvalidLength(void)
BOOL WINAPI GetFileVersionInfoA(LPCSTR filename, DWORD handle, DWORD datasize, LPVOID data)
static void test_info_size(void)
static BOOL(WINAPI *pAddPortExA)(LPSTR
DWORD WINAPI GetFileVersionInfoSizeW(LPCWSTR filename, LPDWORD handle)
#define memcpy(s1, s2, n)
static BOOL is_unicode_enabled
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
#define EXPECT_INVALID__NOT_FOUND
#define ERROR_INVALID_DATA
int WINAPI lstrlenA(LPCSTR lpString)
static void test_32bit_win(void)
#define FILE_VER_GET_LOCALISED
static void test_extra_block(void)
BOOL WINAPI GetFileVersionInfoW(LPCWSTR filename, DWORD handle, DWORD datasize, LPVOID data)
static const LCID english
unsigned long long DWORDLONG
static void VersionDwordLong2String(DWORDLONG Version, LPSTR lpszVerString)
int strcmp(const char *String1, const char *String2)
#define ERROR_CALL_NOT_IMPLEMENTED
char * cleanup(char *str)
#define GetProcAddress(x, y)
#define CreateFileA(a, b, c, d, e, f, g)
GLboolean GLboolean GLboolean GLboolean a
#define ERROR_BAD_PATHNAME
static void create_file(const CHAR *name)
#define HeapFree(x, y, z)
#define ERROR_RESOURCE_DATA_NOT_FOUND
#define ERROR_RESOURCE_TYPE_NOT_FOUND
BOOL WINAPI VerQueryValueW(LPCVOID pBlock, LPCWSTR lpSubBlock, LPVOID *lplpBuffer, PUINT puLen)