ReactOS  0.4.13-dev-443-g10f00f8
apphelp.c File Reference
#include <ntstatus.h>
#include <windows.h>
#include <shlwapi.h>
#include <winnt.h>
#include <winternl.h>
#include <winerror.h>
#include <stdio.h>
#include <initguid.h>
#include <shlguid.h>
#include <shobjidl.h>
#include "wine/test.h"
#include "apphelp_apitest.h"
Include dependency graph for apphelp.c:

Go to the source code of this file.

Classes

struct  tagATTRINFO
 

Macros

#define WIN32_NO_STATUS
 
#define TAG_TYPE_MASK   0xF000
 
#define TAG_TYPE_NULL   0x1000
 
#define TAG_TYPE_BYTE   0x2000
 
#define TAG_TYPE_WORD   0x3000
 
#define TAG_TYPE_DWORD   0x4000
 
#define TAG_TYPE_QWORD   0x5000
 
#define TAG_TYPE_STRINGREF   0x6000
 
#define TAG_TYPE_LIST   0x7000
 
#define TAG_TYPE_STRING   0x8000
 
#define TAG_TYPE_BINARY   0x9000
 
#define TAG_NULL   0x0
 
#define TAG_SIZE   (0x1 | TAG_TYPE_DWORD)
 
#define TAG_CHECKSUM   (0x3 | TAG_TYPE_DWORD)
 
#define TAG_MODULE_TYPE   (0x6 | TAG_TYPE_DWORD)
 
#define TAG_VERDATEHI   (0x7 | TAG_TYPE_DWORD)
 
#define TAG_VERDATELO   (0x8 | TAG_TYPE_DWORD)
 
#define TAG_VERFILEOS   (0x9 | TAG_TYPE_DWORD)
 
#define TAG_VERFILETYPE   (0xA | TAG_TYPE_DWORD)
 
#define TAG_PE_CHECKSUM   (0xB | TAG_TYPE_DWORD)
 
#define TAG_VER_LANGUAGE   (0x12 | TAG_TYPE_DWORD)
 
#define TAG_LINKER_VERSION   (0x1C | TAG_TYPE_DWORD)
 
#define TAG_LINK_DATE   (0x1D | TAG_TYPE_DWORD)
 
#define TAG_UPTO_LINK_DATE   (0x1E | TAG_TYPE_DWORD)
 
#define TAG_EXE_WRAPPER   (0x31 | TAG_TYPE_DWORD)
 
#define TAG_BIN_FILE_VERSION   (0x2 | TAG_TYPE_QWORD)
 
#define TAG_BIN_PRODUCT_VERSION   (0x3 | TAG_TYPE_QWORD)
 
#define TAG_UPTO_BIN_PRODUCT_VERSION   (0x6 | TAG_TYPE_QWORD)
 
#define TAG_UPTO_BIN_FILE_VERSION   (0xD | TAG_TYPE_QWORD)
 
#define TAG_NAME   (0x1 | TAG_TYPE_STRINGREF)
 
#define TAG_COMPANY_NAME   (0x9 | TAG_TYPE_STRINGREF)
 
#define TAG_PRODUCT_NAME   (0x10 | TAG_TYPE_STRINGREF)
 
#define TAG_PRODUCT_VERSION   (0x11 | TAG_TYPE_STRINGREF)
 
#define TAG_FILE_DESCRIPTION   (0x12 | TAG_TYPE_STRINGREF)
 
#define TAG_FILE_VERSION   (0x13 | TAG_TYPE_STRINGREF)
 
#define TAG_ORIGINAL_FILENAME   (0x14 | TAG_TYPE_STRINGREF)
 
#define TAG_INTERNAL_NAME   (0x15 | TAG_TYPE_STRINGREF)
 
#define TAG_LEGAL_COPYRIGHT   (0x16 | TAG_TYPE_STRINGREF)
 
#define TAG_16BIT_DESCRIPTION   (0x17 | TAG_TYPE_STRINGREF)
 
#define TAG_16BIT_MODULE_NAME   (0x20 | TAG_TYPE_STRINGREF)
 
#define TAG_EXPORT_NAME   (0x24 | TAG_TYPE_STRINGREF)
 
#define ATTRIBUTE_AVAILABLE   0x1
 
#define ATTRIBUTE_FAILED   0x2
 
#define expect_tag_skip   (winetest_set_location(__FILE__, __LINE__), 0) ? (void)0 : expect_tag_skip_imp
 
#define expect_tag_empty   (winetest_set_location(__FILE__, __LINE__), 0) ? (void)0 : expect_tag_empty_imp
 
#define expect_tag_dword   (winetest_set_location(__FILE__, __LINE__), 0) ? (void)0 : expect_tag_dword_imp
 
#define expect_tag_qword   (winetest_set_location(__FILE__, __LINE__), 0) ? (void)0 : expect_tag_qword_imp
 
#define expect_tag_str   (winetest_set_location(__FILE__, __LINE__), 0) ? (void)0 : expect_tag_str_imp
 
#define expect_tag_skip_range(ptr, from, to)
 
#define test_crc   (winetest_set_location(__FILE__, __LINE__), 0) ? (void)0 : test_crc_imp
 
#define test_crc2   (winetest_set_location(__FILE__, __LINE__), 0) ? (void)0 : test_crc2_imp
 
#define RESOLVE(fnc)   do { p##fnc = (void *) GetProcAddress(hdll, #fnc); ok(!!p##fnc, #fnc " not found.\n"); } while (0)
 

Typedefs

typedef struct tagATTRINFO ATTRINFO
 
typedef struct tagATTRINFOPATTRINFO
 

Functions

static BOOL (WINAPI *pApphelpCheckShellObject)(REFCLSID
 
static ULONGLONG *static LPCWSTR (WINAPI *pSdbTagToString)(TAG tag)
 
static HRESULT (WINAPI *pSdbGetAppPatchDir)(PVOID hsdb
 
 DEFINE_GUID (GUID_DATABASE_MSI, 0xd8ff6d16, 0x6a3a, 0x468a, 0x8b, 0x44, 0x01, 0x71, 0x4d, 0xdc, 0x49, 0xea)
 
 DEFINE_GUID (GUID_DATABASE_SHIM, 0x11111111, 0x1111, 0x1111, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11)
 
 DEFINE_GUID (GUID_DATABASE_DRIVERS, 0xf9ab2228, 0x3312, 0x4a73, 0xb6, 0xf9, 0x93, 0x6d, 0x70, 0xe1, 0x12, 0xef)
 
 DEFINE_GUID (GUID_NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
 
 DEFINE_GUID (test_Microsoft_Browser_Architecture, 0xa5e46e3a, 0x8849, 0x11d1, 0x9d, 0x8c, 0x00, 0xc0, 0x4f, 0xc9, 0x9d, 0x61)
 
 DEFINE_GUID (test_UserAssist, 0xdd313e04, 0xfeff, 0x11d1, 0x8e, 0xcd, 0x00, 0x00, 0xf8, 0x7a, 0x47, 0x0c)
 
 DEFINE_GUID (CLSID_InternetSecurityManager, 0x7b8a2d94, 0x0ac9, 0x11d1, 0x89, 0x6c, 0x00, 0xc0, 0x4f, 0xB6, 0xbf, 0xc4)
 
static void test_ApphelpCheckShellObject (void)
 
static void test_SdbTagToString (void)
 
static int strcmp_wa (LPCWSTR strw, const char *stra)
 
void test_tag (TAG base, const char *names[], size_t upperlimit, int line)
 
static void test_SdbTagToStringAllTags (void)
 
static void test_GuidFunctions (void)
 
static void expect_tag_skip_imp (PATTRINFO pattr, DWORD num)
 
static void expect_tag_empty_imp (PATTRINFO pattr, DWORD num)
 
static void expect_tag_dword_imp (PATTRINFO pattr, DWORD num, TAG tag, DWORD value)
 
static void expect_tag_qword_imp (PATTRINFO pattr, DWORD num, TAG tag, QWORD value)
 
static void expect_tag_str_imp (PATTRINFO pattr, DWORD num, TAG tag, const WCHAR *value)
 
void test_onefile (WCHAR *filename)
 
static void test_crc_imp (size_t len, DWORD expected)
 
static void test_crc2_imp (DWORD len, int fill, DWORD expected)
 
static void test_ApplicationAttributes (void)
 
static void test_SdbGetAppPatchDir (void)
 
 START_TEST (apphelp)
 

Variables

static HMODULE hdll
 
static BOOL
 
static PWSTR GuidString
 
static PWSTR SIZE_T Length
 
static GUIDGuid
 
static PATTRINFOppAttrInfo
 
static PATTRINFO LPDWORD pdwAttrCount
 
static LPWSTR path
 
static LPWSTR DWORD size
 
static const CLSIDobjects []
 
struct {
   TAG   base
 
   DWORD   upper_limit
 
   DWORD   line
 
   DWORD   min_ver
 
   DWORD   max_ver
 
   const char *   tags [7 *8]
 
data []
 

Macro Definition Documentation

◆ ATTRIBUTE_AVAILABLE

#define ATTRIBUTE_AVAILABLE   0x1

Definition at line 75 of file apphelp.c.

◆ ATTRIBUTE_FAILED

#define ATTRIBUTE_FAILED   0x2

Definition at line 76 of file apphelp.c.

◆ expect_tag_dword

#define expect_tag_dword   (winetest_set_location(__FILE__, __LINE__), 0) ? (void)0 : expect_tag_dword_imp

Definition at line 534 of file apphelp.c.

◆ expect_tag_empty

#define expect_tag_empty   (winetest_set_location(__FILE__, __LINE__), 0) ? (void)0 : expect_tag_empty_imp

Definition at line 533 of file apphelp.c.

◆ expect_tag_qword

#define expect_tag_qword   (winetest_set_location(__FILE__, __LINE__), 0) ? (void)0 : expect_tag_qword_imp

Definition at line 535 of file apphelp.c.

◆ expect_tag_skip

#define expect_tag_skip   (winetest_set_location(__FILE__, __LINE__), 0) ? (void)0 : expect_tag_skip_imp

Definition at line 532 of file apphelp.c.

◆ expect_tag_skip_range

#define expect_tag_skip_range (   ptr,
  from,
  to 
)
Value:
do { \
int n = (from), n_end = (to); \
winetest_set_location(__FILE__, __LINE__); \
for ( ; n < n_end; ++n) \
} while (0)
static void expect_tag_skip_imp(PATTRINFO pattr, DWORD num)
Definition: apphelp.c:493
GLdouble n
Definition: glext.h:7729
static PVOID ptr
Definition: dispmode.c:27
CardRegion * from
Definition: spigame.cpp:19

Definition at line 537 of file apphelp.c.

◆ expect_tag_str

#define expect_tag_str   (winetest_set_location(__FILE__, __LINE__), 0) ? (void)0 : expect_tag_str_imp

Definition at line 536 of file apphelp.c.

◆ RESOLVE

#define RESOLVE (   fnc)    do { p##fnc = (void *) GetProcAddress(hdll, #fnc); ok(!!p##fnc, #fnc " not found.\n"); } while (0)

◆ TAG_16BIT_DESCRIPTION

#define TAG_16BIT_DESCRIPTION   (0x17 | TAG_TYPE_STRINGREF)

Definition at line 70 of file apphelp.c.

◆ TAG_16BIT_MODULE_NAME

#define TAG_16BIT_MODULE_NAME   (0x20 | TAG_TYPE_STRINGREF)

Definition at line 71 of file apphelp.c.

◆ TAG_BIN_FILE_VERSION

#define TAG_BIN_FILE_VERSION   (0x2 | TAG_TYPE_QWORD)

Definition at line 57 of file apphelp.c.

◆ TAG_BIN_PRODUCT_VERSION

#define TAG_BIN_PRODUCT_VERSION   (0x3 | TAG_TYPE_QWORD)

Definition at line 58 of file apphelp.c.

◆ TAG_CHECKSUM

#define TAG_CHECKSUM   (0x3 | TAG_TYPE_DWORD)

Definition at line 45 of file apphelp.c.

◆ TAG_COMPANY_NAME

#define TAG_COMPANY_NAME   (0x9 | TAG_TYPE_STRINGREF)

Definition at line 62 of file apphelp.c.

◆ TAG_EXE_WRAPPER

#define TAG_EXE_WRAPPER   (0x31 | TAG_TYPE_DWORD)

Definition at line 56 of file apphelp.c.

◆ TAG_EXPORT_NAME

#define TAG_EXPORT_NAME   (0x24 | TAG_TYPE_STRINGREF)

Definition at line 72 of file apphelp.c.

◆ TAG_FILE_DESCRIPTION

#define TAG_FILE_DESCRIPTION   (0x12 | TAG_TYPE_STRINGREF)

Definition at line 65 of file apphelp.c.

◆ TAG_FILE_VERSION

#define TAG_FILE_VERSION   (0x13 | TAG_TYPE_STRINGREF)

Definition at line 66 of file apphelp.c.

◆ TAG_INTERNAL_NAME

#define TAG_INTERNAL_NAME   (0x15 | TAG_TYPE_STRINGREF)

Definition at line 68 of file apphelp.c.

◆ TAG_LEGAL_COPYRIGHT

#define TAG_LEGAL_COPYRIGHT   (0x16 | TAG_TYPE_STRINGREF)

Definition at line 69 of file apphelp.c.

◆ TAG_LINK_DATE

#define TAG_LINK_DATE   (0x1D | TAG_TYPE_DWORD)

Definition at line 54 of file apphelp.c.

◆ TAG_LINKER_VERSION

#define TAG_LINKER_VERSION   (0x1C | TAG_TYPE_DWORD)

Definition at line 53 of file apphelp.c.

◆ TAG_MODULE_TYPE

#define TAG_MODULE_TYPE   (0x6 | TAG_TYPE_DWORD)

Definition at line 46 of file apphelp.c.

◆ TAG_NAME

#define TAG_NAME   (0x1 | TAG_TYPE_STRINGREF)

Definition at line 61 of file apphelp.c.

◆ TAG_NULL

#define TAG_NULL   0x0

Definition at line 43 of file apphelp.c.

◆ TAG_ORIGINAL_FILENAME

#define TAG_ORIGINAL_FILENAME   (0x14 | TAG_TYPE_STRINGREF)

Definition at line 67 of file apphelp.c.

◆ TAG_PE_CHECKSUM

#define TAG_PE_CHECKSUM   (0xB | TAG_TYPE_DWORD)

Definition at line 51 of file apphelp.c.

◆ TAG_PRODUCT_NAME

#define TAG_PRODUCT_NAME   (0x10 | TAG_TYPE_STRINGREF)

Definition at line 63 of file apphelp.c.

◆ TAG_PRODUCT_VERSION

#define TAG_PRODUCT_VERSION   (0x11 | TAG_TYPE_STRINGREF)

Definition at line 64 of file apphelp.c.

◆ TAG_SIZE

#define TAG_SIZE   (0x1 | TAG_TYPE_DWORD)

Definition at line 44 of file apphelp.c.

◆ TAG_TYPE_BINARY

#define TAG_TYPE_BINARY   0x9000

Definition at line 42 of file apphelp.c.

◆ TAG_TYPE_BYTE

#define TAG_TYPE_BYTE   0x2000

Definition at line 35 of file apphelp.c.

◆ TAG_TYPE_DWORD

#define TAG_TYPE_DWORD   0x4000

Definition at line 37 of file apphelp.c.

◆ TAG_TYPE_LIST

#define TAG_TYPE_LIST   0x7000

Definition at line 40 of file apphelp.c.

◆ TAG_TYPE_MASK

#define TAG_TYPE_MASK   0xF000

Definition at line 32 of file apphelp.c.

◆ TAG_TYPE_NULL

#define TAG_TYPE_NULL   0x1000

Definition at line 34 of file apphelp.c.

◆ TAG_TYPE_QWORD

#define TAG_TYPE_QWORD   0x5000

Definition at line 38 of file apphelp.c.

◆ TAG_TYPE_STRING

#define TAG_TYPE_STRING   0x8000

Definition at line 41 of file apphelp.c.

◆ TAG_TYPE_STRINGREF

#define TAG_TYPE_STRINGREF   0x6000

Definition at line 39 of file apphelp.c.

◆ TAG_TYPE_WORD

#define TAG_TYPE_WORD   0x3000

Definition at line 36 of file apphelp.c.

◆ TAG_UPTO_BIN_FILE_VERSION

#define TAG_UPTO_BIN_FILE_VERSION   (0xD | TAG_TYPE_QWORD)

Definition at line 60 of file apphelp.c.

◆ TAG_UPTO_BIN_PRODUCT_VERSION

#define TAG_UPTO_BIN_PRODUCT_VERSION   (0x6 | TAG_TYPE_QWORD)

Definition at line 59 of file apphelp.c.

◆ TAG_UPTO_LINK_DATE

#define TAG_UPTO_LINK_DATE   (0x1E | TAG_TYPE_DWORD)

Definition at line 55 of file apphelp.c.

◆ TAG_VER_LANGUAGE

#define TAG_VER_LANGUAGE   (0x12 | TAG_TYPE_DWORD)

Definition at line 52 of file apphelp.c.

◆ TAG_VERDATEHI

#define TAG_VERDATEHI   (0x7 | TAG_TYPE_DWORD)

Definition at line 47 of file apphelp.c.

◆ TAG_VERDATELO

#define TAG_VERDATELO   (0x8 | TAG_TYPE_DWORD)

Definition at line 48 of file apphelp.c.

◆ TAG_VERFILEOS

#define TAG_VERFILEOS   (0x9 | TAG_TYPE_DWORD)

Definition at line 49 of file apphelp.c.

◆ TAG_VERFILETYPE

#define TAG_VERFILETYPE   (0xA | TAG_TYPE_DWORD)

Definition at line 50 of file apphelp.c.

◆ test_crc

#define test_crc   (winetest_set_location(__FILE__, __LINE__), 0) ? (void)0 : test_crc_imp

Definition at line 544 of file apphelp.c.

◆ test_crc2

#define test_crc2   (winetest_set_location(__FILE__, __LINE__), 0) ? (void)0 : test_crc2_imp

Definition at line 545 of file apphelp.c.

◆ WIN32_NO_STATUS

#define WIN32_NO_STATUS

Definition at line 11 of file apphelp.c.

Typedef Documentation

◆ ATTRINFO

◆ PATTRINFO

Function Documentation

◆ BOOL()

static BOOL ( WINAPI pApphelpCheckShellObject)
static

◆ DEFINE_GUID() [1/7]

DEFINE_GUID ( GUID_DATABASE_MSI  ,
0xd8ff6d16  ,
0x6a3a  ,
0x468a  ,
0x8b  ,
0x44  ,
0x01  ,
0x71  ,
0x4d  ,
0xdc  ,
0x49  ,
0xea   
)

◆ DEFINE_GUID() [2/7]

DEFINE_GUID ( GUID_DATABASE_SHIM  ,
0x11111111  ,
0x1111  ,
0x1111  ,
0x11  ,
0x11  ,
0x11  ,
0x11  ,
0x11  ,
0x11  ,
0x11  ,
0x11   
)

◆ DEFINE_GUID() [3/7]

DEFINE_GUID ( GUID_DATABASE_DRIVERS  ,
0xf9ab2228  ,
0x3312  ,
0x4a73  ,
0xb6  ,
0xf9  ,
0x93  ,
0x6d  ,
0x70  ,
0xe1  ,
0x12  ,
0xef   
)

◆ DEFINE_GUID() [4/7]

DEFINE_GUID ( GUID_NULL  ,
,
,
,
,
,
,
,
,
,
,
 
)

◆ DEFINE_GUID() [5/7]

DEFINE_GUID ( test_Microsoft_Browser_Architecture  ,
0xa5e46e3a  ,
0x8849  ,
0x11d1  ,
0x9d  ,
0x8c  ,
0x00  ,
0xc0  ,
0x4f  ,
0xc9  ,
0x9d  ,
0x61   
)

◆ DEFINE_GUID() [6/7]

DEFINE_GUID ( test_UserAssist  ,
0xdd313e04  ,
0xfeff  ,
0x11d1  ,
0x8e  ,
0xcd  ,
0x00  ,
0x00  ,
0xf8  ,
0x7a  ,
0x47  ,
0x0c   
)

◆ DEFINE_GUID() [7/7]

DEFINE_GUID ( CLSID_InternetSecurityManager  ,
0x7b8a2d94  ,
0x0ac9  ,
0x11d1  ,
0x89  ,
0x6c  ,
0x00  ,
0xc0  ,
0x4f  ,
0xB6  ,
0xbf  ,
0xc4   
)

◆ expect_tag_dword_imp()

static void expect_tag_dword_imp ( PATTRINFO  pattr,
DWORD  num,
TAG  tag,
DWORD  value 
)
static

Definition at line 508 of file apphelp.c.

509 {
510  PATTRINFO p = &pattr[num];
511  winetest_ok(p->type == tag, "expected entry #%d to be %x, was %x\n", num, tag, p->type);
512  winetest_ok(p->flags == ATTRIBUTE_AVAILABLE, "expected entry #%d to be available, was %d\n", num, p->flags);
513  winetest_ok(p->dwattr == value, "expected entry #%d to be 0x%x, was 0x%x\n", num, value, p->dwattr);
514 }
Definition: ecma_167.h:138
void __winetest_cdecl winetest_ok(int condition, const char *msg,...)
GLuint GLuint num
Definition: glext.h:9618
#define ATTRIBUTE_AVAILABLE
Definition: apphelp.c:75
GLfloat GLfloat p
Definition: glext.h:8902

Referenced by test_crc2_imp(), and test_crc_imp().

◆ expect_tag_empty_imp()

static void expect_tag_empty_imp ( PATTRINFO  pattr,
DWORD  num 
)
static

Definition at line 500 of file apphelp.c.

501 {
502  PATTRINFO p = &pattr[num];
503  winetest_ok(p->type == TAG_NULL, "expected entry #%d to be TAG_NULL, was %x\n", num, p->type);
504  winetest_ok(p->flags == 0, "expected entry #%d to be 0, was %d\n", num, p->flags);
505  winetest_ok(p->qwattr == 0, "expected entry #%d to be 0, was 0x%I64x\n", num, p->qwattr);
506 }
#define TAG_NULL
Definition: apphelp.c:43
void __winetest_cdecl winetest_ok(int condition, const char *msg,...)
GLuint GLuint num
Definition: glext.h:9618
GLfloat GLfloat p
Definition: glext.h:8902

◆ expect_tag_qword_imp()

static void expect_tag_qword_imp ( PATTRINFO  pattr,
DWORD  num,
TAG  tag,
QWORD  value 
)
static

Definition at line 516 of file apphelp.c.

517 {
518  PATTRINFO p = &pattr[num];
519  winetest_ok(p->type == tag, "expected entry #%d to be %x, was %x\n", num, tag, p->type);
520  winetest_ok(p->flags == ATTRIBUTE_AVAILABLE, "expected entry #%d to be available, was %d\n", num, p->flags);
521  winetest_ok(p->qwattr == value, "expected entry #%d to be 0x%I64x, was 0x%I64x\n", num, value, p->qwattr);
522 }
Definition: ecma_167.h:138
void __winetest_cdecl winetest_ok(int condition, const char *msg,...)
GLuint GLuint num
Definition: glext.h:9618
#define ATTRIBUTE_AVAILABLE
Definition: apphelp.c:75
GLfloat GLfloat p
Definition: glext.h:8902

◆ expect_tag_skip_imp()

static void expect_tag_skip_imp ( PATTRINFO  pattr,
DWORD  num 
)
static

Definition at line 493 of file apphelp.c.

494 {
495  PATTRINFO p = &pattr[num];
496  winetest_ok(p->type == TAG_NULL, "expected entry #%d to be TAG_NULL, was %x\n", num, p->type);
497  winetest_ok(p->flags == ATTRIBUTE_FAILED, "expected entry #%d to be failed, was %d\n", num, p->flags);
498  winetest_ok(p->qwattr == 0, "expected entry #%d to be 0, was 0x%I64x\n", num, p->qwattr);
499 }
#define TAG_NULL
Definition: apphelp.c:43
void __winetest_cdecl winetest_ok(int condition, const char *msg,...)
GLuint GLuint num
Definition: glext.h:9618
#define ATTRIBUTE_FAILED
Definition: apphelp.c:76
GLfloat GLfloat p
Definition: glext.h:8902

◆ expect_tag_str_imp()

static void expect_tag_str_imp ( PATTRINFO  pattr,
DWORD  num,
TAG  tag,
const WCHAR value 
)
static

Definition at line 524 of file apphelp.c.

525 {
526  PATTRINFO p = &pattr[num];
527  winetest_ok(p->type == tag, "expected entry #%d to be %x, was %x\n", num, tag, p->type);
528  winetest_ok(p->flags == ATTRIBUTE_AVAILABLE, "expected entry #%d to be available, was %d\n", num, p->flags);
529  winetest_ok(p->lpattr && wcscmp(p->lpattr, value) == 0, "expected entry #%d to be %s, was %s\n", num, wine_dbgstr_w(value), wine_dbgstr_w(p->lpattr));
530 }
#define wine_dbgstr_w
Definition: kernel32.h:34
Definition: ecma_167.h:138
void __winetest_cdecl winetest_ok(int condition, const char *msg,...)
GLuint GLuint num
Definition: glext.h:9618
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
#define ATTRIBUTE_AVAILABLE
Definition: apphelp.c:75
GLfloat GLfloat p
Definition: glext.h:8902

◆ HRESULT()

static HRESULT ( WINAPI pSdbGetAppPatchDir)
static

◆ LPCWSTR()

static ULONGLONG* static LPCWSTR ( WINAPI pSdbTagToString)
static

◆ START_TEST()

START_TEST ( apphelp  )

Definition at line 926 of file apphelp.c.

927 {
928  //SetEnvironmentVariable("SHIM_DEBUG_LEVEL", "4");
929  //SetEnvironmentVariable("DEBUGCHANNEL", "+apphelp");
931 
932  hdll = LoadLibraryA("apphelp.dll");
934  trace("Detected apphelp.dll version: 0x%x\n", g_WinVersion);
935 
936 #define RESOLVE(fnc) do { p##fnc = (void *) GetProcAddress(hdll, #fnc); ok(!!p##fnc, #fnc " not found.\n"); } while (0)
945 #undef RESOLVE
946 
952  if (pSdbGetAppPatchDir)
954 }
static void test_ApplicationAttributes(void)
Definition: apphelp.c:639
#define trace(...)
Definition: kmt_test.h:217
static void test_SdbGetAppPatchDir(void)
Definition: apphelp.c:874
BOOL WINAPI SdbGetFileAttributes(LPCWSTR path, PATTRINFO *attr_info_ret, LPDWORD attr_count)
Definition: sdbfileattr.c:239
static void test_ApphelpCheckShellObject(void)
Definition: apphelp.c:121
HRESULT WINAPI SdbGetAppPatchDir(HSDB db, LPWSTR path, DWORD size)
Definition: hsdb.c:579
DWORD get_module_version(HMODULE mod)
Definition: data.c:803
#define RESOLVE(fnc)
static void test_GuidFunctions(void)
Definition: apphelp.c:467
static void test_SdbTagToString(void)
Definition: apphelp.c:164
BOOL WINAPI ApphelpCheckShellObject(REFCLSID ObjectCLSID, BOOL bShimIfNecessary, ULONGLONG *pullFlags)
Definition: apphelp.c:82
HINSTANCE WINAPI DECLSPEC_HOTPATCH LoadLibraryA(LPCSTR lpLibFileName)
Definition: loader.c:111
BOOL WINAPI SdbGUIDToString(CONST GUID *Guid, PWSTR GuidString, SIZE_T Length)
Definition: sdbapi.c:412
LPCWSTR WINAPI SdbTagToString(TAG tag)
Definition: sdbapi.c:752
static DWORD g_WinVersion
static void test_SdbTagToStringAllTags(void)
Definition: apphelp.c:454
BOOL WINAPI SdbIsNullGUID(CONST GUID *Guid)
Definition: sdbapi.c:431
void silence_debug_output(void)
Definition: data.c:833
static HMODULE hdll
Definition: apphelp.c:88
BOOL WINAPI SdbFreeFileAttributes(PATTRINFO attr_info)
Definition: sdbfileattr.c:214
BOOL WINAPI SdbGetStandardDatabaseGUID(DWORD Flags, GUID *Guid)
Definition: sdbapi.c:445

◆ strcmp_wa()

static int strcmp_wa ( LPCWSTR  strw,
const char stra 
)
static

Definition at line 184 of file apphelp.c.

185 {
186  CHAR buf[512];
187  WideCharToMultiByte(CP_ACP, 0, strw, -1, buf, sizeof(buf), 0, 0);
188  return lstrcmpA(buf, stra);
189 }
#define WideCharToMultiByte
Definition: compat.h:101
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
#define CP_ACP
Definition: compat.h:99
char CHAR
Definition: xmlstorage.h:175
int WINAPI lstrcmpA(LPCSTR lpString1, LPCSTR lpString2)
Definition: lstring.c:18
static const char * strw(LPCWSTR x)
Definition: actctx.c:49

Referenced by test_tag().

◆ test_ApphelpCheckShellObject()

static void test_ApphelpCheckShellObject ( void  )
static

Definition at line 121 of file apphelp.c.

122 {
124  BOOL res;
125  int i;
126 
127  if (!pApphelpCheckShellObject)
128  {
129  win_skip("ApphelpCheckShellObject not available\n");
130  return;
131  }
132 
133  for (i = 0; objects[i]; i++)
134  {
135  flags = 0xdeadbeef;
136  SetLastError(0xdeadbeef);
137  res = pApphelpCheckShellObject(objects[i], FALSE, &flags);
138  ok(res && (flags == 0), "%s 0: got %d and 0x%x%08x with 0x%x (expected TRUE and 0)\n",
140 
141  flags = 0xdeadbeef;
142  SetLastError(0xdeadbeef);
143  res = pApphelpCheckShellObject(objects[i], TRUE, &flags);
144  ok(res && (flags == 0), "%s 1: got %d and 0x%x%08x with 0x%x (expected TRUE and 0)\n",
146 
147  }
148 
149  /* NULL as pointer to flags is checked */
150  SetLastError(0xdeadbeef);
151  res = pApphelpCheckShellObject(&GUID_NULL, FALSE, NULL);
152  ok(res, "%s 0: got %d with 0x%x (expected != FALSE)\n", wine_dbgstr_guid(&GUID_NULL), res, GetLastError());
153 
154  /* NULL as CLSID* crash on Windows */
155  if (0)
156  {
157  flags = 0xdeadbeef;
158  SetLastError(0xdeadbeef);
159  res = pApphelpCheckShellObject(NULL, FALSE, &flags);
160  trace("NULL as CLSID*: got %d and 0x%x%08x with 0x%x\n", res, (ULONG)(flags >> 32), (ULONG)flags, GetLastError());
161  }
162 }
#define trace(...)
Definition: kmt_test.h:217
#define TRUE
Definition: types.h:120
const char * wine_dbgstr_guid(const GUID *guid)
DWORD WINAPI GetLastError(VOID)
Definition: except.c:1059
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
Definition: glfuncs.h:248
static const CLSID * objects[]
Definition: apphelp.c:109
unsigned int BOOL
Definition: ntddk_ex.h:94
#define ok(value,...)
smooth NULL
Definition: ftsmooth.c:416
uint64_t ULONGLONG
Definition: typedefs.h:65
#define SetLastError(x)
Definition: compat.h:409
GLbitfield flags
Definition: glext.h:7161
#define GUID_NULL
Definition: ks.h:106
GLuint res
Definition: glext.h:9613
unsigned int ULONG
Definition: retypes.h:1
#define win_skip
Definition: test.h:141

Referenced by START_TEST().

◆ test_ApplicationAttributes()

static void test_ApplicationAttributes ( void  )
static

Definition at line 639 of file apphelp.c.

640 {
641  static const WCHAR path[] = {'t','e','s','t','x','x','.','e','x','e',0};
642  static const WCHAR PRODUCT_VERSION[] = {'1','.','0','.','0','.','1',0};
643  static const WCHAR FILE_DESCRIPTION[] = {'F','i','l','e','D','e','s','c','r','i','p','t','i','o','n',0};
644  static const WCHAR COMPANY_NAME[] = {'C','o','m','p','a','n','y','N','a','m','e',0};
645  static const WCHAR PRODUCT_NAME[] = {'P','r','o','d','u','c','t','N','a','m','e',0};
646  static const WCHAR FILE_VERSION[] = {'1','.','0','.','0','.','0',0};
647  static const WCHAR ORIGINAL_FILENAME[] = {'O','r','i','g','i','n','a','l','F','i','l','e','n','a','m','e',0};
648  static const WCHAR INTERNAL_NAME[] = {'I','n','t','e','r','n','a','l','N','a','m','e',0};
649  static const WCHAR LEGAL_COPYRIGHT[] = {'L','e','g','a','l','C','o','p','y','r','i','g','h','t',0};
650  static const WCHAR EXPORT_NAME[] = {'T','e','S','t','2','.','e','x','e',0};
651  static const WCHAR OS2_DESCRIPTION[] = {'M','O','D',' ','D','E','S','C','R','I','P','T','I','O','N',' ','H','E','R','E',0};
652  static const WCHAR OS2_EXPORT_NAME[] = {'T','E','S','T','M','O','D','.','h','X','x',0};
653  static const WCHAR OS2_DESCRIPTION_broken[] = {'Z',0};
654  static const WCHAR OS2_EXPORT_NAME_broken[] = {'E',0};
655 
656  PATTRINFO pattrinfo = (PATTRINFO)0xdead;
657  DWORD num = 333;
658  BOOL ret;
659 
660  /* ensure the file is not there. */
661  DeleteFileA("testxx.exe");
662  ret = pSdbGetFileAttributes(path, &pattrinfo, &num);
663  ok(ret == FALSE, "expected SdbGetFileAttributes to fail.\n");
664  ok(pattrinfo == (PATTRINFO)0xdead, "expected the pointer not to change.\n");
665  ok(num == 333, "expected the number of items not to change.\n");
666  if (ret)
667  pSdbFreeFileAttributes(pattrinfo);
668 
669  /* Test a file with as much features as possible */
670  test_create_exe(L"testxx.exe", 0);
671 
672  ret = pSdbGetFileAttributes(path, &pattrinfo, &num);
673  ok(ret != FALSE, "expected SdbGetFileAttributes to succeed.\n");
674  ok(pattrinfo != (PATTRINFO)0xdead, "expected a valid pointer.\n");
675  ok(num == 28, "expected 28 items, got %d.\n", num);
676 
677  if (num == 28 && ret)
678  {
679  expect_tag_dword(pattrinfo, 0, TAG_SIZE, 0x800);
680  expect_tag_dword(pattrinfo, 1, TAG_CHECKSUM, 0x178bd629);
681  expect_tag_qword(pattrinfo, 2, TAG_BIN_FILE_VERSION, 0x1000000000000ull);
682  expect_tag_qword(pattrinfo, 3, TAG_BIN_PRODUCT_VERSION, 0x1000000000001ull);
683  expect_tag_str(pattrinfo, 4, TAG_PRODUCT_VERSION, PRODUCT_VERSION);
684  expect_tag_str(pattrinfo, 5, TAG_FILE_DESCRIPTION, FILE_DESCRIPTION);
685  expect_tag_str(pattrinfo, 6, TAG_COMPANY_NAME, COMPANY_NAME);
687  expect_tag_str(pattrinfo, 8, TAG_FILE_VERSION, FILE_VERSION);
688  expect_tag_str(pattrinfo, 9, TAG_ORIGINAL_FILENAME, ORIGINAL_FILENAME);
689  expect_tag_str(pattrinfo, 10, TAG_INTERNAL_NAME, INTERNAL_NAME);
690  expect_tag_str(pattrinfo, 11, TAG_LEGAL_COPYRIGHT, LEGAL_COPYRIGHT);
691  expect_tag_dword(pattrinfo, 12, TAG_VERDATEHI, 0x1d1a019);
692  expect_tag_dword(pattrinfo, 13, TAG_VERDATELO, 0xac754c50);
694  expect_tag_dword(pattrinfo, 15, TAG_VERFILETYPE, VFT_APP);
695  expect_tag_dword(pattrinfo, 16, TAG_MODULE_TYPE, 0x3); /* Win32 */
696  expect_tag_dword(pattrinfo, 17, TAG_PE_CHECKSUM, 0xBAAD);
697  expect_tag_dword(pattrinfo, 18, TAG_LINKER_VERSION, 0x40002);
698  expect_tag_skip(pattrinfo, 19); /* TAG_16BIT_DESCRIPTION */
699  expect_tag_skip(pattrinfo, 20); /* TAG_16BIT_MODULE_NAME */
700  expect_tag_qword(pattrinfo, 21, TAG_UPTO_BIN_FILE_VERSION, 0x1000000000000ull);
701  expect_tag_qword(pattrinfo, 22, TAG_UPTO_BIN_PRODUCT_VERSION, 0x1000000000001ull);
702  expect_tag_dword(pattrinfo, 23, TAG_LINK_DATE, 0x12345);
703  expect_tag_dword(pattrinfo, 24, TAG_UPTO_LINK_DATE, 0x12345);
704  expect_tag_str(pattrinfo, 25, TAG_EXPORT_NAME, EXPORT_NAME);
705  expect_tag_dword(pattrinfo, 26, TAG_VER_LANGUAGE, 0xffff);
706  expect_tag_dword(pattrinfo, 27, TAG_EXE_WRAPPER, 0x0);
707  }
708  if (ret)
709  pSdbFreeFileAttributes(pattrinfo);
710 
711 
712  /* Disable resource and exports */
713  test_create_exe(L"testxx.exe", 1);
714 
715  ret = pSdbGetFileAttributes(path, &pattrinfo, &num);
716  ok(ret != FALSE, "expected SdbGetFileAttributes to succeed.\n");
717  ok(pattrinfo != (PATTRINFO)0xdead, "expected a valid pointer.\n");
718  ok(num == 28, "expected 28 items, got %d.\n", num);
719 
720  if (num == 28 && ret)
721  {
722  expect_tag_dword(pattrinfo, 0, TAG_SIZE, 0x800);
723  expect_tag_dword(pattrinfo, 1, TAG_CHECKSUM, 0xea7caffd);
724  expect_tag_skip_range(pattrinfo, 2, 16);
725  expect_tag_dword(pattrinfo, 16, TAG_MODULE_TYPE, 0x3); /* Win32 */
726  expect_tag_dword(pattrinfo, 17, TAG_PE_CHECKSUM, 0xBAAD);
727  expect_tag_dword(pattrinfo, 18, TAG_LINKER_VERSION, 0x40002);
728  expect_tag_skip_range(pattrinfo, 19, 23);
729  expect_tag_dword(pattrinfo, 23, TAG_LINK_DATE, 0x12345);
730  expect_tag_dword(pattrinfo, 24, TAG_UPTO_LINK_DATE, 0x12345);
731  expect_tag_skip(pattrinfo, 25); /* TAG_EXPORT_NAME */
732  expect_tag_empty(pattrinfo, 26); /* TAG_VER_LANGUAGE */
733  expect_tag_dword(pattrinfo, 27, TAG_EXE_WRAPPER, 0x0);
734  }
735  if (ret)
736  pSdbFreeFileAttributes(pattrinfo);
737 
738  /* A file with just 'MZ' */
739  test_create_file(L"testxx.exe", "MZ", 2);
740 
741  ret = pSdbGetFileAttributes(path, &pattrinfo, &num);
742  ok(ret != FALSE, "expected SdbGetFileAttributes to succeed.\n");
743  ok(pattrinfo != (PATTRINFO)0xdead, "expected a valid pointer.\n");
744  ok(num == 28, "expected 28 items, got %d.\n", num);
745 
746  if (num == 28 && ret)
747  {
748  expect_tag_dword(pattrinfo, 0, TAG_SIZE, 0x2);
749  expect_tag_dword(pattrinfo, 1, TAG_CHECKSUM, 0);
750  expect_tag_skip_range(pattrinfo, 2, 16);
751  expect_tag_dword(pattrinfo, 16, TAG_MODULE_TYPE, 0x1);
752  expect_tag_skip_range(pattrinfo, 17, 26);
753  expect_tag_empty(pattrinfo, 26); /* TAG_VER_LANGUAGE */
754  expect_tag_skip(pattrinfo, 27); /* TAG_EXE_WRAPPER */
755  }
756  if (ret)
757  pSdbFreeFileAttributes(pattrinfo);
758 
759  /* Empty file */
760  test_create_file(L"testxx.exe", NULL, 0);
761 
762  ret = pSdbGetFileAttributes(path, &pattrinfo, &num);
763  ok(ret != FALSE, "expected SdbGetFileAttributes to succeed.\n");
764  ok(pattrinfo != (PATTRINFO)0xdead, "expected a valid pointer.\n");
765  ok(num == 28, "expected 28 items, got %d.\n", num);
766 
767  if (num == 28 && ret)
768  {
769  expect_tag_dword(pattrinfo, 0, TAG_SIZE, 0);
770  expect_tag_skip_range(pattrinfo, 1, 26);
771  expect_tag_empty(pattrinfo, 26); /* TAG_VER_LANGUAGE */
772  expect_tag_skip(pattrinfo, 27); /* TAG_EXE_WRAPPER */
773  }
774  if (ret)
775  pSdbFreeFileAttributes(pattrinfo);
776 
777  /* minimal NE executable */
778  test_create_ne(L"testxx.exe", 0);
779 
780  ret = pSdbGetFileAttributes(path, &pattrinfo, &num);
781  ok(ret != FALSE, "expected SdbGetFileAttributes to succeed.\n");
782  ok(pattrinfo != (PATTRINFO)0xdead, "expected a valid pointer.\n");
783  ok(num == 28, "expected 28 items, got %d.\n", num);
784 
785  if (num == 28 && ret)
786  {
787  expect_tag_dword(pattrinfo, 0, TAG_SIZE, 0xa8);
788  expect_tag_dword(pattrinfo, 1, TAG_CHECKSUM, 0xf2abe4e9);
789  expect_tag_skip_range(pattrinfo, 2, 16);
790  expect_tag_dword(pattrinfo, 16, TAG_MODULE_TYPE, 0x2);
791  expect_tag_skip(pattrinfo, 17); /* TAG_PE_CHECKSUM */
792  expect_tag_skip(pattrinfo, 18); /* TAG_LINKER_VERSION */
793  expect_tag_str(pattrinfo, 19, TAG_16BIT_DESCRIPTION, OS2_DESCRIPTION);
794  expect_tag_str(pattrinfo, 20, TAG_16BIT_MODULE_NAME, OS2_EXPORT_NAME);
795  expect_tag_skip_range(pattrinfo, 21, 26);
796  expect_tag_empty(pattrinfo, 26); /* TAG_VER_LANGUAGE */
797  expect_tag_skip(pattrinfo, 27); /* TAG_EXE_WRAPPER */
798  }
799  if (ret)
800  pSdbFreeFileAttributes(pattrinfo);
801 
802  /* NE executable with description / module name pointers zero, to show they are always used */
803  test_create_ne(L"testxx.exe", 1);
804 
805  ret = pSdbGetFileAttributes(path, &pattrinfo, &num);
806  ok(ret != FALSE, "expected SdbGetFileAttributes to succeed.\n");
807  ok(pattrinfo != (PATTRINFO)0xdead, "expected a valid pointer.\n");
808  ok(num == 28, "expected 28 items, got %d.\n", num);
809 
810  if (num == 28 && ret)
811  {
812  expect_tag_dword(pattrinfo, 0, TAG_SIZE, 0xa8);
813  expect_tag_dword(pattrinfo, 1, TAG_CHECKSUM, 0xddcbe4c9);
814  expect_tag_skip_range(pattrinfo, 2, 16);
815  expect_tag_dword(pattrinfo, 16, TAG_MODULE_TYPE, 0x2);
816  expect_tag_skip(pattrinfo, 17); /* TAG_PE_CHECKSUM */
817  expect_tag_skip(pattrinfo, 18); /* TAG_LINKER_VERSION */
818  expect_tag_str(pattrinfo, 19, TAG_16BIT_DESCRIPTION, OS2_DESCRIPTION_broken); /* the 'Z' from 'MZ' */
819  expect_tag_str(pattrinfo, 20, TAG_16BIT_MODULE_NAME, OS2_EXPORT_NAME_broken); /* the 'E' from 'NE' */
820  expect_tag_skip_range(pattrinfo, 21, 26);
821  expect_tag_empty(pattrinfo, 26); /* TAG_VER_LANGUAGE */
822  expect_tag_skip(pattrinfo, 27); /* TAG_EXE_WRAPPER */
823  }
824  if (ret)
825  pSdbFreeFileAttributes(pattrinfo);
826 
827  test_crc(1, 0);
828  test_crc(2, 0);
829  test_crc(3, 0);
830  test_crc(4, 0x2020202);
831  test_crc(5, 0x2020202);
832  test_crc(6, 0x2020202);
833  test_crc(7, 0x2020202);
834  test_crc(8, 0x81818181);
835  test_crc(9, 0x81818181);
836  test_crc(10, 0x81818181);
837  test_crc(11, 0x81818181);
838  test_crc(12, 0xc2c2c2c2);
839  test_crc(16, 0x62626262);
840 
841  /* This seems to be the cutoff point */
842  test_crc2(0xffc, 4, 0xfbfbfcfc);
843  test_crc2(0xffc, 8, 0x7070717);
844  test_crc2(0xffc, 0xcc, 0xc8eba002);
845  test_crc2(0xffc, 0, 0x4622028d);
846 
847  test_crc2(0x1000, 4, 0x80);
848  test_crc2(0x1000, 8, 0x8787878f);
849  test_crc2(0x1000, 0xcc, 0x4adc3667);
850  test_crc2(0x1000, 0, 0xa3108044);
851 
852  /* Here is another cutoff point */
853  test_crc2(0x11fc, 4, 0x80);
854  test_crc2(0x11fc, 8, 0x8787878f);
855  test_crc2(0x11fc, 0xcc, 0x4adc3667);
856  test_crc2(0x11fc, 0, 0xf03e0800);
857 
858  test_crc2(0x1200, 4, 0x80);
859  test_crc2(0x1200, 8, 0x8787878f);
860  test_crc2(0x1200, 0xcc, 0x4adc3667);
861  test_crc2(0x1200, 0, 0xa3108044);
862 
863  /* After that, it stays the same for all sizes */
864  test_crc2(0xf000, 4, 0x80);
865  test_crc2(0xf000, 8, 0x8787878f);
866  test_crc2(0xf000, 0xcc, 0x4adc3667);
867  test_crc2(0xf000, 0, 0xa3108044);
868 
869 
870  DeleteFileA("testxx.exe");
871 }
#define TAG_INTERNAL_NAME
Definition: apphelp.c:68
#define TAG_16BIT_DESCRIPTION
Definition: apphelp.c:70
#define test_create_ne
#define expect_tag_skip_range(ptr, from, to)
Definition: apphelp.c:537
#define TAG_FILE_VERSION
Definition: apphelp.c:66
#define VOS__WINDOWS32
Definition: verrsrc.h:64
GLint x0
Definition: linetemp.h:95
#define TAG_EXE_WRAPPER
Definition: apphelp.c:56
#define TAG_VER_LANGUAGE
Definition: apphelp.c:52
#define TAG_BIN_PRODUCT_VERSION
Definition: apphelp.c:58
#define TAG_VERFILEOS
Definition: apphelp.c:49
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG x1
Definition: winddi.h:3706
#define TAG_PRODUCT_NAME
Definition: apphelp.c:63
#define TAG_SIZE
Definition: apphelp.c:44
#define TAG_PRODUCT_VERSION
Definition: apphelp.c:64
#define TAG_VERDATEHI
Definition: apphelp.c:47
unsigned int BOOL
Definition: ntddk_ex.h:94
#define expect_tag_dword
Definition: apphelp.c:534
#define ok(value,...)
#define TAG_BIN_FILE_VERSION
Definition: apphelp.c:57
smooth NULL
Definition: ftsmooth.c:416
BOOL WINAPI DeleteFileA(IN LPCSTR lpFileName)
Definition: delete.c:24
#define TAG_PE_CHECKSUM
Definition: apphelp.c:51
#define TAG_FILE_DESCRIPTION
Definition: apphelp.c:65
#define expect_tag_qword
Definition: apphelp.c:535
#define TAG_CHECKSUM
Definition: apphelp.c:45
#define TAG_LEGAL_COPYRIGHT
Definition: apphelp.c:69
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define TAG_COMPANY_NAME
Definition: apphelp.c:62
unsigned long DWORD
Definition: ntddk_ex.h:95
#define expect_tag_empty
Definition: apphelp.c:533
GLuint GLuint num
Definition: glext.h:9618
#define TAG_VERFILETYPE
Definition: apphelp.c:50
int ret
static const WCHAR L[]
Definition: oid.c:1250
#define test_create_exe
#define TAG_ORIGINAL_FILENAME
Definition: apphelp.c:67
#define TAG_UPTO_BIN_PRODUCT_VERSION
Definition: apphelp.c:59
#define TAG_MODULE_TYPE
Definition: apphelp.c:46
#define test_crc
Definition: apphelp.c:544
#define TAG_16BIT_MODULE_NAME
Definition: apphelp.c:71
#define TAG_LINK_DATE
Definition: apphelp.c:54
Definition: services.c:325
#define test_create_file
#define TAG_UPTO_BIN_FILE_VERSION
Definition: apphelp.c:60
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG _In_ LONG _In_ LONG x2
Definition: winddi.h:3706
#define expect_tag_str
Definition: apphelp.c:536
#define TAG_VERDATELO
Definition: apphelp.c:48
#define test_crc2
Definition: apphelp.c:545
#define TAG_UPTO_LINK_DATE
Definition: apphelp.c:55
#define TAG_EXPORT_NAME
Definition: apphelp.c:72
#define VFT_APP
Definition: verrsrc.h:75
#define expect_tag_skip
Definition: apphelp.c:532
#define TAG_LINKER_VERSION
Definition: apphelp.c:53
#define PRODUCT_NAME
struct tagATTRINFO * PATTRINFO

Referenced by START_TEST().

◆ test_crc2_imp()

static void test_crc2_imp ( DWORD  len,
int  fill,
DWORD  expected 
)
static

Definition at line 609 of file apphelp.c.

610 {
611  static const WCHAR path[] = {'t','e','s','t','x','x','.','e','x','e',0};
612 
613  PATTRINFO pattrinfo = (PATTRINFO)0xdead;
614  DWORD num = 333;
615  BOOL ret;
616  size_t n;
617  char* crc_test = malloc(len);
618  for (n = 0; n < len; ++n)
619  crc_test[n] = (char)(fill ? fill : n);
620 
621  test_create_file_imp(L"testxx.exe", crc_test, len);
622  free(crc_test);
623  ret = pSdbGetFileAttributes(path, &pattrinfo, &num);
624  winetest_ok(ret != FALSE, "expected SdbGetFileAttributes to succeed.\n");
625  winetest_ok(pattrinfo != (PATTRINFO)0xdead, "expected a valid pointer.\n");
626  winetest_ok(num == 28, "expected 28 items, got %d.\n", num);
627 
628  if (num == 28 && ret)
629  {
630  expect_tag_dword_imp(pattrinfo, 0, TAG_SIZE, len);
632  }
633  if (ret)
634  pSdbFreeFileAttributes(pattrinfo);
635 }
#define free
Definition: debug_ros.c:5
GLdouble n
Definition: glext.h:7729
#define TAG_SIZE
Definition: apphelp.c:44
unsigned int BOOL
Definition: ntddk_ex.h:94
#define TAG_CHECKSUM
Definition: apphelp.c:45
__wchar_t WCHAR
Definition: xmlstorage.h:180
void __winetest_cdecl winetest_ok(int condition, const char *msg,...)
_STLP_MOVE_TO_STD_NAMESPACE void fill(_ForwardIter __first, _ForwardIter __last, const _Tp &__val)
Definition: _algobase.h:449
unsigned long DWORD
Definition: ntddk_ex.h:95
GLuint GLuint num
Definition: glext.h:9618
int ret
static const WCHAR L[]
Definition: oid.c:1250
GLenum GLsizei len
Definition: glext.h:6722
static void expect_tag_dword_imp(PATTRINFO pattr, DWORD num, TAG tag, DWORD value)
Definition: apphelp.c:508
void test_create_file_imp(const WCHAR *name, const char *contents, size_t len)
Definition: data.c:547
Definition: services.c:325
#define malloc
Definition: debug_ros.c:4
BOOL expected
Definition: store.c:2063
struct tagATTRINFO * PATTRINFO

◆ test_crc_imp()

static void test_crc_imp ( size_t  len,
DWORD  expected 
)
static

Definition at line 586 of file apphelp.c.

587 {
588  static const WCHAR path[] = {'t','e','s','t','x','x','.','e','x','e',0};
589  static char crc_test[] = {4, 4, 4, 4, 1, 1, 1, 1, 4, 4, 4, 4, 2, 2, 2, 2};
590 
591  PATTRINFO pattrinfo = (PATTRINFO)0xdead;
592  DWORD num = 333;
593  BOOL ret;
594 
595  test_create_file_imp(L"testxx.exe", crc_test, len);
596  ret = pSdbGetFileAttributes(path, &pattrinfo, &num);
597  winetest_ok(ret != FALSE, "expected SdbGetFileAttributes to succeed.\n");
598  winetest_ok(pattrinfo != (PATTRINFO)0xdead, "expected a valid pointer.\n");
599  winetest_ok(num == 28, "expected 28 items, got %d.\n", num);
600 
601  if (num == 28 && ret)
602  {
604  }
605  if (ret)
606  pSdbFreeFileAttributes(pattrinfo);
607 }
unsigned int BOOL
Definition: ntddk_ex.h:94
#define TAG_CHECKSUM
Definition: apphelp.c:45
__wchar_t WCHAR
Definition: xmlstorage.h:180
void __winetest_cdecl winetest_ok(int condition, const char *msg,...)
unsigned long DWORD
Definition: ntddk_ex.h:95
GLuint GLuint num
Definition: glext.h:9618
int ret
static const WCHAR L[]
Definition: oid.c:1250
GLenum GLsizei len
Definition: glext.h:6722
static void expect_tag_dword_imp(PATTRINFO pattr, DWORD num, TAG tag, DWORD value)
Definition: apphelp.c:508
void test_create_file_imp(const WCHAR *name, const char *contents, size_t len)
Definition: data.c:547
Definition: services.c:325
BOOL expected
Definition: store.c:2063
struct tagATTRINFO * PATTRINFO

◆ test_GuidFunctions()

static void test_GuidFunctions ( void  )
static

Definition at line 467 of file apphelp.c.

468 {
469  GUID guid;
470  ok(pSdbIsNullGUID(&GUID_NULL), "expected GUID_NULL to be recognized as NULL GUID\n");
471  ok(pSdbIsNullGUID(NULL), "expected NULL to be recognized as NULL GUID\n");
472  ok(pSdbIsNullGUID(&test_UserAssist) == 0, "expected a set GUID not to be recognized as NULL GUID\n");
473 
474  memset(&guid, 0, sizeof(guid));
475  ok(pSdbGetStandardDatabaseGUID(0, &guid) == 0,"Expected SdbGetStandardDatabaseGUID to fail\n");
476  ok(IsEqualGUID(&GUID_NULL, &guid), "Expected guid not to be changed\n");
477 
478  ok(pSdbGetStandardDatabaseGUID(0x80020000, NULL),"Expected SdbGetStandardDatabaseGUID to succeed\n");
479 
480  memset(&guid, 0, sizeof(guid));
481  ok(pSdbGetStandardDatabaseGUID(0x80020000, &guid),"Expected SdbGetStandardDatabaseGUID to succeed\n");
482  ok(IsEqualGUID(&GUID_DATABASE_MSI, &guid), "Expected guid to equal GUID_DATABASE_MSI, was: %s\n", wine_dbgstr_guid(&guid));
483 
484  memset(&guid, 0, sizeof(guid));
485  ok(pSdbGetStandardDatabaseGUID(0x80030000, &guid),"Expected SdbGetStandardDatabaseGUID to succeed\n");
486  ok(IsEqualGUID(&GUID_DATABASE_SHIM, &guid), "Expected guid to equal GUID_DATABASE_SHIM, was: %s\n", wine_dbgstr_guid(&guid));
487 
488  memset(&guid, 0, sizeof(guid));
489  ok(pSdbGetStandardDatabaseGUID(0x80040000, &guid),"Expected SdbGetStandardDatabaseGUID to succeed\n");
490  ok(IsEqualGUID(&GUID_DATABASE_DRIVERS, &guid), "Expected guid to equal GUID_DATABASE_DRIVERS, was: %s\n", wine_dbgstr_guid(&guid));
491 }
static const GUID GUID_DATABASE_SHIM
Definition: sdbapi.c:17
const char * wine_dbgstr_guid(const GUID *guid)
static const GUID GUID_DATABASE_DRIVERS
Definition: sdbapi.c:18
const GUID * guid
#define ok(value,...)
smooth NULL
Definition: ftsmooth.c:416
static const GUID GUID_DATABASE_MSI
Definition: sdbapi.c:16
#define GUID_NULL
Definition: ks.h:106
BOOL WINAPI IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
Definition: compobj.c:4021
#define memset(x, y, z)
Definition: compat.h:39

Referenced by START_TEST().

◆ test_onefile()

void test_onefile ( WCHAR filename)

Definition at line 547 of file apphelp.c.

548 {
549  PATTRINFO pattrinfo;
550  DWORD num;
551 
552  if (!pSdbFreeFileAttributes)
553  {
554  hdll = LoadLibraryA("apphelp.dll");
555  pSdbTagToString = (void *)GetProcAddress(hdll, "SdbTagToString");
556  pSdbGetFileAttributes = (void *)GetProcAddress(hdll, "SdbGetFileAttributes");
557  pSdbFreeFileAttributes = (void *)GetProcAddress(hdll, "SdbFreeFileAttributes");
558  }
559 
560  if (pSdbGetFileAttributes(filename, &pattrinfo, &num))
561  {
562  if (pattrinfo[16].flags == ATTRIBUTE_AVAILABLE)
563  {
564  if (pattrinfo[16].type != TAG_MODULE_TYPE)//SdbpSetAttrFail(&attr_info[16]); /* TAG_MODULE_TYPE (1: WIN16?) (3: WIN32?) (WIN64?), Win32VersionValue? */)
565  printf("FAIL TAG_MODULE_TYPE (%S)\n", filename);
566  if (pattrinfo[16].dwattr != 3 && pattrinfo[16].dwattr != 2)
567  printf("TAG_MODULE_TYPE(%S): %d\n", filename, pattrinfo[16].dwattr); // C:\Program Files (x86)\Windows Kits\8.1\Lib\win7\stub512.com
568  if (pattrinfo[16].dwattr == 2)
569  {
570  printf("TAG_MODULE_TYPE(%S): %d, %d\n", filename, pattrinfo[16].dwattr, pattrinfo[0].dwattr);
571  }
572  }
573 
574  if (pattrinfo[27].flags == ATTRIBUTE_AVAILABLE)
575  {
576  if (pattrinfo[27].type != TAG_EXE_WRAPPER)
577  printf("FAIL TAG_EXE_WRAPPER (%S)\n", filename);
578  if (pattrinfo[27].dwattr != 0)
579  printf("TAG_EXE_WRAPPER(%S): %d\n", filename, pattrinfo[27].dwattr);
580  }
581 
582  pSdbFreeFileAttributes(pattrinfo);
583  }
584 }
#define TAG_EXE_WRAPPER
Definition: apphelp.c:56
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
const char * filename
Definition: ioapi.h:135
HINSTANCE WINAPI DECLSPEC_HOTPATCH LoadLibraryA(LPCSTR lpLibFileName)
Definition: loader.c:111
unsigned long DWORD
Definition: ntddk_ex.h:95
GLuint GLuint num
Definition: glext.h:9618
GLbitfield flags
Definition: glext.h:7161
static HMODULE hdll
Definition: apphelp.c:88
#define TAG_MODULE_TYPE
Definition: apphelp.c:46
#define ATTRIBUTE_AVAILABLE
Definition: apphelp.c:75
#define GetProcAddress(x, y)
Definition: compat.h:410
#define printf
Definition: config.h:203

◆ test_SdbGetAppPatchDir()

static void test_SdbGetAppPatchDir ( void  )
static

Definition at line 874 of file apphelp.c.

875 {
878  int n;
879 
880 
881  _SEH2_TRY
882  {
883  hr = pSdbGetAppPatchDir(NULL, NULL, 0);
884  ok_hex(hr, S_FALSE);
885  }
887  {
888  /* Some versions accept it, some don't */
889  trace("SdbGetAppPatchDir did not handle a NULL pointer very gracefully.\n");
890  }
891  _SEH2_END;
892 
893 
894 
895  memset(Buffer, 0xbb, sizeof(Buffer));
896  hr = pSdbGetAppPatchDir(NULL, Buffer, 0);
899  else if (g_WinVersion < WINVER_WIN10)
900  expect_hr = S_OK;
901  else
902  expect_hr = S_FALSE;
903  ok_hex(hr, expect_hr);
904 
907  else if (g_WinVersion < WINVER_WIN10)
908  expect_hr = S_OK;
909  else
910  expect_hr = TRUE;
911 
912  memset(Buffer, 0xbb, sizeof(Buffer));
913  hr = pSdbGetAppPatchDir(NULL, Buffer, 1);
914  ok_hex(hr, expect_hr);
915 
916 
917  for (n = 2; n < _countof(Buffer) - 1; ++n)
918  {
919  memset(Buffer, 0xbb, sizeof(Buffer));
920  hr = pSdbGetAppPatchDir(NULL, Buffer, n);
921  ok(Buffer[n] == 0xbbbb, "Expected SdbGetAppPatchDir to leave WCHAR at %d untouched, was: %d\n",
922  n, Buffer[n]);
923  ok(hr == S_OK || hr == expect_hr, "Expected S_OK or 0x%x, was: 0x%x (at %d)\n", expect_hr, hr, n);
924  }
925 }
#define ERROR_INVALID_PARAMETER
Definition: compat.h:91
#define trace(...)
Definition: kmt_test.h:217
#define TRUE
Definition: types.h:120
#define HRESULT_FROM_WIN32(x)
Definition: winerror.h:92
HRESULT hr
Definition: shlfolder.c:183
#define _countof(array)
Definition: fontsub.cpp:30
GLdouble n
Definition: glext.h:7729
_SEH2_TRY
Definition: create.c:4250
#define WINVER_WIN10
#define ok(value,...)
#define S_FALSE
Definition: winerror.h:2357
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
smooth NULL
Definition: ftsmooth.c:416
Definition: bufpool.h:45
static DWORD g_WinVersion
#define ok_hex(expression, result)
Definition: test.h:759
__wchar_t WCHAR
Definition: xmlstorage.h:180
LONG HRESULT
Definition: typedefs.h:77
#define MAX_PATH
Definition: compat.h:26
#define WINVER_WIN7
#define expect_hr(expected, got)
Definition: assoc.c:27
#define S_OK
Definition: intsafe.h:59
_SEH2_END
Definition: create.c:4424
#define _SEH2_EXCEPT(...)
Definition: pseh2_64.h:6
#define memset(x, y, z)
Definition: compat.h:39
#define ERROR_INSUFFICIENT_BUFFER
Definition: dderror.h:10

Referenced by START_TEST().

◆ test_SdbTagToString()

static void test_SdbTagToString ( void  )
static

Definition at line 164 of file apphelp.c.

165 {
166  static const TAG invalid_values[] = {
168  TAG_TYPE_DWORD | 0xFF,
169  TAG_TYPE_DWORD | (0x800 + 0xEE),
170  0x900, 0xFFFF, 0xDEAD, 0xBEEF
171  };
172  static const WCHAR invalid[] = {'I','n','v','a','l','i','d','T','a','g',0};
173  LPCWSTR ret;
174  WORD i;
175 
176  for (i = 0; i < 9; ++i)
177  {
178  ret = pSdbTagToString(invalid_values[i]);
179  ok(lstrcmpW(ret, invalid) == 0, "unexpected string %s, should be %s\n",
181  }
182 }
static const WCHAR invalid[]
Definition: assoc.c:39
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185
int WINAPI lstrcmpW(LPCWSTR lpString1, LPCWSTR lpString2)
Definition: lstring.c:170
#define wine_dbgstr_w
Definition: kernel32.h:34
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
Definition: glfuncs.h:248
#define ok(value,...)
#define TAG_TYPE_DWORD
Definition: apphelp.c:37
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define TAG_TYPE_WORD
Definition: apphelp.c:36
unsigned short WORD
Definition: ntddk_ex.h:93
int ret
#define TAG_TYPE_MASK
Definition: apphelp.c:32
Definition: fs_rec.h:142

Referenced by START_TEST().

◆ test_SdbTagToStringAllTags()

static void test_SdbTagToStringAllTags ( void  )
static

Definition at line 454 of file apphelp.c.

455 {
456  int n;
457  for (n = 0; data[n].base; ++n)
458  {
459  if ((data[n].min_ver == WINVER_ANY || g_WinVersion >= data[n].min_ver) &&
461  {
463  }
464  }
465 }
#define WINVER_ANY
const char * tags[7 *8]
Definition: apphelp.c:213
GLdouble n
Definition: glext.h:7729
DWORD min_ver
Definition: apphelp.c:211
void test_tag(TAG base, const char *names[], size_t upperlimit, int line)
Definition: apphelp.c:191
Definition: parser.c:48
static DWORD g_WinVersion
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
DWORD upper_limit
Definition: apphelp.c:209
DWORD max_ver
Definition: apphelp.c:212

Referenced by START_TEST().

◆ test_tag()

void test_tag ( TAG  base,
const char names[],
size_t  upperlimit,
int  line 
)

Definition at line 191 of file apphelp.c.

192 {
193  TAG n;
194  for (n = 0; names[n]; ++n)
195  {
196  LPCWSTR tagstr = pSdbTagToString(base | n);
197  ok_(__FILE__, line + 2)(!strcmp_wa(tagstr, names[n]), "Got %s instead of '%s' for %x\n", wine_dbgstr_w(tagstr), names[n], base | n);
198  }
199  for (; n < upperlimit; ++n)
200  {
201  LPCWSTR tagstr = pSdbTagToString(base | n);
202  ok_(__FILE__, line + 2)(!strcmp_wa(tagstr, "InvalidTag"), "Got %s instead of 'InvalidTag' for %x\n", wine_dbgstr_w(tagstr), base | n);
203  }
204 }
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185
#define ok_(x1, x2)
#define wine_dbgstr_w
Definition: kernel32.h:34
GLdouble n
Definition: glext.h:7729
GLuint GLuint * names
Definition: glext.h:11545
Definition: parser.c:48
static int strcmp_wa(LPCWSTR strw, const char *stra)
Definition: apphelp.c:184
Definition: fs_rec.h:142

Referenced by test_SdbTagToStringAllTags().

Variable Documentation

◆ base

Definition at line 208 of file apphelp.c.

◆ BOOL

Definition at line 89 of file apphelp.c.

◆ data

struct { ... } data[]

◆ Guid

◆ GuidString

PWSTR GuidString

Definition at line 91 of file apphelp.c.

Referenced by ApphelpCheckShellObject(), BcdOpenObject(), BiConvertRegistryDataToElement(), CreateNewVolumeName(), CreateNoDriveLetterEntry(), DumpAutomationTable(), EfiInitpCreateApplicationEntry(), GetInterfaceNameInternal(), CPortPinWaveRT::HandleKsProperty(), CPortPinWavePci::HandleKsProperty(), IKsClock_DispatchDeviceIoControl(), IKsFilter_DispatchDeviceIoControl(), IKsPin_DispatchDeviceIoControl(), InitializeMachineInformation(), IopNotifyPlugPlayNotification(), IopOpenInterfaceKey(), IopStartRamdisk(), IoRegisterDeviceInterface(), IoSetDeviceInterfaceState(), KsCacheMedium(), KspCreatePin(), KspEnableEvent(), KspPinPropertyHandler(), KspReadMediaCategory(), KspValidateConnectRequest(), MMixerGetDeviceNameWithComponentId(), ok_keys_(), OpenRegistryHandlesFromSymbolicLink(), PciQueryInterface(), PcNewPort(), CDrmPort2::QueryInterface(), CRegistryKey::QueryInterface(), CPortClsVersion::QueryInterface(), CUnregisterSubdevice::QueryInterface(), CPortDMus::QueryInterface(), CPortTopology::QueryInterface(), CPortWaveRT::QueryInterface(), CPortWavePci::QueryInterface(), CResourceList::QueryInterface(), CPortWaveCyclic::QueryInterface(), CInterruptSync::QueryInterface(), CUnregisterPhysicalConnection::QueryInterface(), CServiceGroup::QueryInterface(), RamdiskCreateDiskDevice(), RtlStringFromGUID(), SdbGUIDFromString(), SdbGUIDToString(), SysAudioHandleProperty(), test_GetInterfaceName(), USBAudioInitComponentId(), WINTRUST_Guid2Wstr(), WINTRUST_ReadProviderFromReg(), WINTRUST_RemoveProviderFromReg(), WINTRUST_WriteProviderToReg(), WintrustAddActionID(), WintrustAddDefaultForUsage(), WintrustLoadFunctionPointers(), WintrustRemoveActionID(), WmipGUIDFromString(), and WmipOpenGuidObjectByName().

◆ hdll

HMODULE hdll
static

Definition at line 88 of file apphelp.c.

Referenced by START_TEST(), and test_onefile().

◆ Length

Definition at line 91 of file apphelp.c.

Referenced by ApphelpCacheWrite().

◆ line

Definition at line 210 of file apphelp.c.

Referenced by _bdf_is_atom(), _bdf_parse_properties(), _test_invalid_parameter(), ActiveScriptSite_OnScriptError(), add_line(), add_message_(), bitmap_decompress1(), bitmap_decompress2(), bitmap_decompress3(), call_ica_hw_interrupt(), ClrLineSerial(), cmd_call(), config_parse_pair(), create_parseError(), CreateCaseDiff(), data_type_state(), DIALOG_StatusBarUpdateCaretPos(), DoCommand(), domacro(), DrawTextExWorker(), dword_data_state(), EDIT_EM_LineFromChar(), EDIT_PaintLine(), error(), expand_input(), find_line(), fnIMLangLineBreakConsole_BreakLineA(), ft_bitmap_assure_buffer(), ft_smooth_render_generic(), get_lineA(), get_lineW(), get_string_subst(), gtStripContig(), gtStripSeparate(), gtTileContig(), gtTileSeparate(), header_state(), hex_data_state(), hex_multiline_state(), hexdump(), HEXEDIT_PaintLines(), inf_process_content(), inf_value_parse(), init_leases_list(), InitLogo(), InvertLineSerial(), line_start_state(), Load_CP2Unicode_Table(), Load_OEM2Unicode_Table(), main(), MakeArgv(), memp_malloc(), msi_parse_line(), CTrayClockWnd::OnPaint(), parse_win31_line_state(), ParseHostLine(), print_glsl_info_log(), ProcessFirewallPrefFile(), ProcessPrefsFile(), processRegLines(), processRegLinesA(), processRegLinesW(), processSetValue(), proclog(), hhp_reader::read(), read_dependencies(), read_platform_entry(), Bookmark::read_url(), read_version_entry(), Readline(), readline(), run_thread(), set_ldids(), set_location(), setup_test(), SetupFindNextMatchLineW(), SetupGetLineTextA(), SetupGetLineTextW(), shader_arb_compile(), shader_glsl_compile(), shader_glsl_dump_program_source(), shader_sm1_read_comment(), stabs_pts_push(), string_data_state(), test_getgamma(), test_penfilltype(), test_transform(), txt_get_glyph_table(), txt_get_header(), txt_get_mb_table(), txt_get_wc_table(), UDFExtentToMapping_(), UnDosLine(), value_get_str_field(), widl_getline(), FstreamTest::win32_file_format(), xkeymap_read(), xmlMallocAtomicLoc(), xmlMallocLoc(), xmlMemStrdupLoc(), xmlParseAttValueInternal(), xmlParseCharData(), xmlParseElement(), and xmlReallocLoc().

◆ max_ver

DWORD max_ver

Definition at line 212 of file apphelp.c.

Referenced by test_SdbTagToStringAllTags().

◆ min_ver

DWORD min_ver

Definition at line 211 of file apphelp.c.

Referenced by test_SdbTagToStringAllTags(), and test_source_iface().

◆ objects

const CLSID* objects[]
static
Initial value:
= {
&test_Microsoft_Browser_Architecture,
&CLSID_MenuBand,
&CLSID_ShellLink,
&CLSID_ShellWindows,
&CLSID_InternetSecurityManager,
&test_UserAssist,
(const CLSID *)NULL
}
smooth NULL
Definition: ftsmooth.c:416
#define GUID_NULL
Definition: ks.h:106

Definition at line 109 of file apphelp.c.

Referenced by d3dx9_parse_effect_annotation(), d3dx9_parse_effect_parameter(), d3dx9_parse_effect_pass(), d3dx9_parse_effect_technique(), d3dx9_parse_init_value(), d3dx9_parse_sampler(), d3dx9_parse_state(), d3dx9_parse_value(), ps_parser_load_field(), ps_parser_load_field_table(), sink_Indicate(), t1_load_keyword(), t42_load_keyword(), and test_ApphelpCheckShellObject().

◆ path

Definition at line 96 of file apphelp.c.

◆ pdwAttrCount

PATTRINFO LPDWORD pdwAttrCount

Definition at line 94 of file apphelp.c.

◆ ppAttrInfo

PATTRINFO* ppAttrInfo

Definition at line 94 of file apphelp.c.

◆ size

Definition at line 96 of file apphelp.c.

◆ tags

◆ upper_limit

DWORD upper_limit