ReactOS  0.4.13-dev-455-g28ed234
sdbapi.c File Reference
#include "ntndk.h"
#include "strsafe.h"
#include "apphelp.h"
#include "sdbstringtable.h"
Include dependency graph for sdbapi.c:

Go to the source code of this file.

Functions

static HANDLE SdbpHeap (void)
 
void SdbpHeapInit (void)
 
void SdbpHeapDeinit (void)
 
LPVOID SdbpAlloc (SIZE_T size)
 
LPVOID SdbpReAlloc (LPVOID mem, SIZE_T size, SIZE_T oldSize)
 
void SdbpFree (LPVOID mem)
 
PDB WINAPI SdbpCreate (LPCWSTR path, PATH_TYPE type, BOOL write)
 
void WINAPI SdbpFlush (PDB pdb)
 
DWORD SdbpStrlen (PCWSTR string)
 
DWORD SdbpStrsize (PCWSTR string)
 
PWSTR SdbpStrDup (LPCWSTR string)
 
BOOL WINAPI SdbpOpenMemMappedFile (LPCWSTR path, PMEMMAPPED mapping)
 
void WINAPI SdbpCloseMemMappedFile (PMEMMAPPED mapping)
 
BOOL WINAPI SdbpCheckTagType (TAG tag, WORD type)
 
BOOL WINAPI SdbpCheckTagIDType (PDB pdb, TAGID tagid, WORD type)
 
PDB SdbpOpenDatabase (LPCWSTR path, PATH_TYPE type)
 
PDB WINAPI SdbOpenDatabase (LPCWSTR path, PATH_TYPE type)
 
void WINAPI SdbCloseDatabase (PDB pdb)
 
BOOL WINAPI SdbGUIDFromString (PCWSTR GuidString, GUID *Guid)
 
BOOL WINAPI SdbGUIDToString (CONST GUID *Guid, PWSTR GuidString, SIZE_T Length)
 
BOOL WINAPI SdbIsNullGUID (CONST GUID *Guid)
 
BOOL WINAPI SdbGetStandardDatabaseGUID (DWORD Flags, GUID *Guid)
 
BOOL WINAPI SdbGetDatabaseVersion (LPCWSTR database, PDWORD VersionHi, PDWORD VersionLo)
 
SdbGetDatabaseInformation

Get information about the database

Parameters
pdbThe database
informationThe returned information
Returns
TRUE on success
BOOL WINAPI SdbGetDatabaseInformation (PDB pdb, PDB_INFORMATION information)
 

Variables

static const GUID GUID_DATABASE_MSI = {0xd8ff6d16,0x6a3a,0x468a, {0x8b,0x44,0x01,0x71,0x4d,0xdc,0x49,0xea}}
 
static const GUID GUID_DATABASE_SHIM = {0x11111111,0x1111,0x1111, {0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11}}
 
static const GUID GUID_DATABASE_DRIVERS = {0xf9ab2228,0x3312,0x4a73, {0xb6,0xf9,0x93,0x6d,0x70,0xe1,0x12,0xef}}
 
static HANDLE g_Heap
 

SdbFreeDatabaseInformation

Free up resources allocated in SdbGetDatabaseInformation

Parameters
informationThe information retrieved from SdbGetDatabaseInformation
#define REG_SZ   1
 
#define REG_DWORD   4
 
#define REG_QWORD   11
 
VOID WINAPI SdbFreeDatabaseInformation (PDB_INFORMATION information)
 
TAGID WINAPI SdbFindFirstNamedTag (PDB pdb, TAGID root, TAGID find, TAGID nametag, LPCWSTR find_name)
 
TAGREF WINAPI SdbGetLayerTagRef (HSDB hsdb, LPCWSTR layerName)
 
DWORD WINAPI SdbQueryDataExTagID (PDB pdb, TAGID tiExe, LPCWSTR lpszDataName, LPDWORD lpdwDataType, LPVOID lpBuffer, LPDWORD lpcbBufferSize, TAGID *ptiData)
 
LONGLONG WINAPI SdbMakeIndexKeyFromString (LPCWSTR str)
 
LPCWSTR WINAPI SdbTagToString (TAG tag)
 

Macro Definition Documentation

◆ REG_DWORD

#define REG_DWORD   4

Definition at line 596 of file sdbapi.c.

◆ REG_QWORD

#define REG_QWORD   11

Definition at line 597 of file sdbapi.c.

◆ REG_SZ

#define REG_SZ   1

Definition at line 595 of file sdbapi.c.

Function Documentation

◆ SdbCloseDatabase()

void WINAPI SdbCloseDatabase ( PDB  pdb)

Closes specified database and frees its memory.

Parameters
[in]pdbHandle to the shim database.

Definition at line 373 of file sdbapi.c.

374 {
375  if (!pdb)
376  return;
377 
378  if (pdb->file)
379  NtClose(pdb->file);
380  if (pdb->string_buffer)
381  SdbCloseDatabase(pdb->string_buffer);
382  if (pdb->string_lookup)
383  SdbpTableDestroy(&pdb->string_lookup);
384  SdbFree(pdb->data);
385  SdbFree(pdb);
386 }
static PDB pdb
Definition: db.cpp:170
void SdbpTableDestroy(struct SdbStringHashTable **pTable)
#define SdbFree(mem)
Definition: sdbpapi.h:37
NTSTATUS NTAPI NtClose(IN HANDLE Handle)
Definition: obhandle.c:3399
void WINAPI SdbCloseDatabase(PDB pdb)
Definition: sdbapi.c:373

Referenced by SdbCloseDatabase(), SdbGetDatabaseVersion(), SdbOpenDatabase(), SdbpCreate(), and SdbpOpenDatabase().

◆ SdbFindFirstNamedTag()

TAGID WINAPI SdbFindFirstNamedTag ( PDB  pdb,
TAGID  root,
TAGID  find,
TAGID  nametag,
LPCWSTR  find_name 
)

Find the first named child tag.

Parameters
[in]pdbThe database.
[in]rootThe tag to start at
[in]findThe tag type to find
[in]nametagThe child of 'find' that contains the name
[in]find_nameThe name to find
Returns
The found tag, or TAGID_NULL on failure

Definition at line 544 of file sdbapi.c.

545 {
546  TAGID iter;
547 
548  iter = SdbFindFirstTag(pdb, root, find);
549 
550  while (iter != TAGID_NULL)
551  {
552  TAGID tmp = SdbFindFirstTag(pdb, iter, nametag);
553  if (tmp != TAGID_NULL)
554  {
556  if (name && !wcsicmp(name, find_name))
557  return iter;
558  }
559  iter = SdbFindNextTag(pdb, root, iter);
560  }
561  return TAGID_NULL;
562 }
static PDB pdb
Definition: db.cpp:170
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185
LPWSTR WINAPI SdbGetStringTagPtr(PDB pdb, TAGID tagid)
Definition: sdbread.c:375
static TAGID TAGID TAGID nametag
Definition: db.cpp:153
TAGID WINAPI SdbFindNextTag(PDB pdb, TAGID parent, TAGID prev_child)
Definition: sdbread.c:231
static TAGID TAGID TAGID LPCWSTR find_name
Definition: db.cpp:153
TAGID WINAPI SdbFindFirstTag(PDB pdb, TAGID parent, TAG tag)
Definition: sdbread.c:208
#define wcsicmp
Definition: string.h:1152
#define TAGID_NULL
Definition: db.cpp:36
static TAGID TAGID find
Definition: db.cpp:153
Definition: name.c:36
DWORD TAGID

Referenced by SdbGetLayerTagRef(), SdbpAddNamedLayerMatch(), and SdbQueryDataExTagID().

◆ SdbFreeDatabaseInformation()

VOID WINAPI SdbFreeDatabaseInformation ( PDB_INFORMATION  information)

Definition at line 527 of file sdbapi.c.

528 {
529  // No-op
530 }

Referenced by SdbRegisterDatabaseEx().

◆ SdbGetDatabaseInformation()

BOOL WINAPI SdbGetDatabaseInformation ( PDB  pdb,
PDB_INFORMATION  information 
)

Definition at line 502 of file sdbapi.c.

503 {
504  if (pdb && information)
505  {
506  information->dwFlags = 0;
507  information->dwMajor = pdb->major;
508  information->dwMinor = pdb->minor;
509  information->Description = pdb->database_name;
510  if (!SdbIsNullGUID(&pdb->database_id))
511  {
513  information->Id = pdb->database_id;
514  }
515  return TRUE;
516  }
517 
518  return FALSE;
519 }
#define TRUE
Definition: types.h:120
static PDB pdb
Definition: db.cpp:170
LPCWSTR Description
Definition: apphelp.h:83
DWORD dwMajor
Definition: apphelp.h:81
#define DB_INFO_FLAGS_VALID_GUID
Definition: apphelp.h:76
BOOL WINAPI SdbIsNullGUID(CONST GUID *Guid)
Definition: sdbapi.c:431
DWORD dwFlags
Definition: apphelp.h:80
DWORD dwMinor
Definition: apphelp.h:82
static PDB_INFORMATION information
Definition: db.cpp:176

Referenced by SdbRegisterDatabaseEx().

◆ SdbGetDatabaseVersion()

BOOL WINAPI SdbGetDatabaseVersion ( LPCWSTR  database,
PDWORD  VersionHi,
PDWORD  VersionLo 
)

Read the database version from the specified database.

Parameters
[in]databaseThe database.
[out]VersionHiThe first part of the version number.
[out]VersionLoThe second part of the version number.
Returns
TRUE if it succeeds or fails, FALSE if ???

Definition at line 479 of file sdbapi.c.

480 {
481  PDB pdb;
482 
483  pdb = SdbpOpenDatabase(database, DOS_PATH);
484  if (pdb)
485  {
486  *VersionHi = pdb->major;
487  *VersionLo = pdb->minor;
489  }
490 
491  return TRUE;
492 }
#define TRUE
Definition: types.h:120
static PDB pdb
Definition: db.cpp:170
PDB SdbpOpenDatabase(LPCWSTR path, PATH_TYPE type)
Definition: sdbapi.c:269
void WINAPI SdbCloseDatabase(PDB pdb)
Definition: sdbapi.c:373

◆ SdbGetLayerTagRef()

TAGREF WINAPI SdbGetLayerTagRef ( HSDB  hsdb,
LPCWSTR  layerName 
)

Find a named layer in a multi-db.

Parameters
[in]hsdbThe multi-database.
[in]layerNameThe named tag to find.
Returns
The layer, or TAGREF_NULL on failure

Definition at line 573 of file sdbapi.c.

574 {
575  PDB pdb = hsdb->pdb;
576 
578  if (database != TAGID_NULL)
579  {
581  if (layer != TAGID_NULL)
582  {
583  TAGREF tr;
584  if (SdbTagIDToTagRef(hsdb, pdb, layer, &tr))
585  {
586  return tr;
587  }
588  }
589  }
590  return TAGREF_NULL;
591 }
DWORD TAGREF
static LPCWSTR layerName
Definition: db.cpp:171
#define TAG_NAME
Definition: vfat.h:547
static PDB pdb
Definition: db.cpp:170
#define TAG_DATABASE
Definition: db.cpp:83
#define TAGREF_NULL
Definition: sdbtypes.h:21
GLenum GLuint GLint GLint layer
Definition: glext.h:7007
TAGID WINAPI SdbFindFirstTag(PDB pdb, TAGID parent, TAG tag)
Definition: sdbread.c:208
BOOL WINAPI SdbTagIDToTagRef(HSDB hsdb, PDB pdb, TAGID tiWhich, TAGREF *ptrWhich)
Definition: hsdb.c:669
#define TAGID_NULL
Definition: db.cpp:36
TAGID WINAPI SdbFindFirstNamedTag(PDB pdb, TAGID root, TAGID find, TAGID nametag, LPCWSTR find_name)
Definition: sdbapi.c:544
#define TAG_LAYER
Definition: db.cpp:88
#define TAGID_ROOT
Definition: db.cpp:37
PDB pdb
Definition: apphelp.h:28
DWORD TAGID

◆ SdbGetStandardDatabaseGUID()

BOOL WINAPI SdbGetStandardDatabaseGUID ( DWORD  Flags,
GUID Guid 
)

Get the GUID from one of the standard databases.

Parameters
[in]FlagsThe ID to retrieve the guid from. (See SDB_DATABASE_MAIN_[xxx])
[out]GuidThe resulting GUID.
Returns
TRUE if a known database ID.

Definition at line 445 of file sdbapi.c.

446 {
447  const GUID* copy_from = NULL;
448  switch(Flags & HID_DATABASE_TYPE_MASK)
449  {
451  copy_from = &GUID_DATABASE_MSI;
452  break;
454  copy_from = &GUID_DATABASE_SHIM;
455  break;
457  copy_from = &GUID_DATABASE_DRIVERS;
458  break;
459  default:
460  SHIM_ERR("Cannot obtain database guid for databases other than main\n");
461  return FALSE;
462  }
463  if (Guid)
464  {
465  memcpy(Guid, copy_from, sizeof(GUID));
466  }
467  return TRUE;
468 }
#define TRUE
Definition: types.h:120
static const GUID GUID_DATABASE_SHIM
Definition: sdbapi.c:17
static const GUID GUID_DATABASE_DRIVERS
Definition: sdbapi.c:18
#define SDB_DATABASE_MAIN_SHIM
Definition: apphelp.h:24
_Must_inspect_result_ _In_ ULONG Flags
Definition: wsk.h:170
#define SDB_DATABASE_MAIN_MSI
Definition: apphelp.h:23
static GUID * Guid
Definition: apphelp.c:93
smooth NULL
Definition: ftsmooth.c:416
#define SDB_DATABASE_MAIN_DRIVERS
Definition: apphelp.h:25
static const GUID GUID_DATABASE_MSI
Definition: sdbapi.c:16
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
#define HID_DATABASE_TYPE_MASK
Definition: apphelp.h:22

Referenced by START_TEST().

◆ SdbGUIDFromString()

BOOL WINAPI SdbGUIDFromString ( PCWSTR  GuidString,
GUID Guid 
)

Parses a string to retrieve a GUID.

Parameters
[in]GuidStringThe string to parse.
[out]GuidThe resulting GUID.
Returns
TRUE if it succeeds, FALSE if it fails.

Definition at line 396 of file sdbapi.c.

397 {
398  UNICODE_STRING GuidString_u;
399  RtlInitUnicodeString(&GuidString_u, GuidString);
400  return NT_SUCCESS(RtlGUIDFromString(&GuidString_u, Guid));
401 }
static PWSTR GuidString
Definition: apphelp.c:91
static GUID * Guid
Definition: apphelp.c:93
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
NTSYSAPI NTSTATUS WINAPI RtlGUIDFromString(PUNICODE_STRING, GUID *)
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)

◆ SdbGUIDToString()

BOOL WINAPI SdbGUIDToString ( CONST GUID Guid,
PWSTR  GuidString,
SIZE_T  Length 
)

Converts a GUID to a string.

Parameters
[in]GuidThe GUID to convert.
[out]GuidStringThe resulting string representation of Guid.
[in]LengthThe length of GuidString.
Returns
TRUE if it succeeds, FALSE if it fails.

Definition at line 412 of file sdbapi.c.

413 {
414  UNICODE_STRING GuidString_u;
415  if (NT_SUCCESS(RtlStringFromGUID(Guid, &GuidString_u)))
416  {
417  HRESULT hr = StringCchCopyNW(GuidString, Length, GuidString_u.Buffer, GuidString_u.Length / 2);
418  RtlFreeUnicodeString(&GuidString_u);
419  return SUCCEEDED(hr);
420  }
421  return FALSE;
422 }
static PWSTR GuidString
Definition: apphelp.c:91
STRSAFEAPI StringCchCopyNW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc, size_t cchToCopy)
Definition: strsafe.h:236
HRESULT hr
Definition: shlfolder.c:183
static GUID * Guid
Definition: apphelp.c:93
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
LONG HRESULT
Definition: typedefs.h:77
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:101
NTSYSAPI NTSTATUS WINAPI RtlStringFromGUID(REFGUID, PUNICODE_STRING)
#define SUCCEEDED(hr)
Definition: intsafe.h:57

Referenced by ApphelpCheckShellObject(), SdbRegisterDatabaseEx(), SdbUnregisterDatabase(), and START_TEST().

◆ SdbIsNullGUID()

BOOL WINAPI SdbIsNullGUID ( CONST GUID Guid)

Checks if the specified GUID is a NULL GUID

Parameters
[in]GuidThe GUID to check.
Returns
TRUE if it is a NULL GUID.

Definition at line 431 of file sdbapi.c.

432 {
433  static GUID NullGuid = { 0 };
434  return !Guid || IsEqualGUID(&NullGuid, Guid);
435 }
static GUID * Guid
Definition: apphelp.c:93
BOOL WINAPI IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
Definition: compobj.c:4021

Referenced by SdbGetDatabaseID(), SdbGetDatabaseInformation(), and START_TEST().

◆ SdbMakeIndexKeyFromString()

LONGLONG WINAPI SdbMakeIndexKeyFromString ( LPCWSTR  str)

Converts the specified string to an index key.

Parameters
[in]strThe string which will be converted.
Returns
The resulting index key
Todo:
: Fix this for unicode strings.

Definition at line 713 of file sdbapi.c.

714 {
715  LONGLONG result = 0;
716  int shift = 56;
717 
718  while (*str && shift >= 0)
719  {
720  WCHAR c = toupper(*(str++));
721 
722  if (c & 0xff)
723  {
724  result |= (((LONGLONG)(c & 0xff)) << shift);
725  shift -= 8;
726  }
727 
728  if (shift < 0)
729  break;
730 
731  c >>= 8;
732 
733  if (c & 0xff)
734  {
735  result |= (((LONGLONG)(c & 0xff)) << shift);
736  shift -= 8;
737  }
738  }
739 
740  return result;
741 }
#define shift
Definition: input.c:1668
const WCHAR * str
int64_t LONGLONG
Definition: typedefs.h:66
int toupper(int c)
Definition: utclib.c:881
__wchar_t WCHAR
Definition: xmlstorage.h:180
const GLubyte * c
Definition: glext.h:8905
GLuint64EXT * result
Definition: glext.h:11304

◆ SdbOpenDatabase()

PDB WINAPI SdbOpenDatabase ( LPCWSTR  path,
PATH_TYPE  type 
)

Opens specified shim database file.

Parameters
[in]pathPath to the shim database.
[in]typeType of path. Either DOS_PATH or NT_PATH.
Returns
Success: Handle to the shim database, NULL otherwise.

Definition at line 329 of file sdbapi.c.

330 {
331  PDB pdb;
332  TAGID root, name;
333 
335  if (!pdb)
336  return NULL;
337 
338  if (pdb->major != 2 && pdb->major != 3)
339  {
341  SHIM_ERR("Invalid shim database version\n");
342  return NULL;
343  }
344 
346  if (!SdbGetDatabaseID(pdb, &pdb->database_id))
347  {
348  SHIM_INFO("Failed to get the database id\n");
349  }
350 
352  if (root != TAGID_NULL)
353  {
355  if (name != TAGID_NULL)
356  {
357  pdb->database_name = SdbGetStringTagPtr(pdb, name);
358  }
359  }
360  if (!pdb->database_name)
361  {
362  SHIM_INFO("Failed to get the database name\n");
363  }
364 
365  return pdb;
366 }
#define TAG_NAME
Definition: vfat.h:547
static PDB pdb
Definition: db.cpp:170
#define TAG_DATABASE
Definition: db.cpp:83
struct _root root
LPWSTR WINAPI SdbGetStringTagPtr(PDB pdb, TAGID tagid)
Definition: sdbread.c:375
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
#define TAG_STRINGTABLE
Definition: db.cpp:92
smooth NULL
Definition: ftsmooth.c:416
BOOL WINAPI SdbGetDatabaseID(PDB pdb, GUID *Guid)
Definition: sdbread.c:388
PDB SdbpOpenDatabase(LPCWSTR path, PATH_TYPE type)
Definition: sdbapi.c:269
TAGID WINAPI SdbFindFirstTag(PDB pdb, TAGID parent, TAG tag)
Definition: sdbread.c:208
#define TAGID_NULL
Definition: db.cpp:36
Definition: services.c:325
#define TAGID_ROOT
Definition: db.cpp:37
Definition: name.c:36
void WINAPI SdbCloseDatabase(PDB pdb)
Definition: sdbapi.c:373
DWORD TAGID
GLuint const GLchar * name
Definition: glext.h:6031

Referenced by CLayerStringList::CLayerStringList(), SdbInitDatabase(), and SdbRegisterDatabaseEx().

◆ SdbpAlloc()

LPVOID SdbpAlloc ( SIZE_T  size)

Definition at line 55 of file sdbapi.c.

60 {
62 #if SDBAPI_DEBUG_ALLOC
63  SdbpInsertAllocation(mem, size, line, file);
64 #endif
65  return mem;
66 }
Definition: parser.c:48
static HANDLE SdbpHeap(void)
Definition: sdbapi.c:50
PVOID NTAPI RtlAllocateHeap(IN PVOID HeapHandle, IN ULONG Flags, IN SIZE_T Size)
Definition: heap.c:585
GLsizeiptr size
Definition: glext.h:5919
#define HEAP_ZERO_MEMORY
Definition: compat.h:123
Definition: mem.c:156
Definition: fci.c:126

Referenced by SeiInitPaths().

◆ SdbpCheckTagIDType()

BOOL WINAPI SdbpCheckTagIDType ( PDB  pdb,
TAGID  tagid,
WORD  type 
)

Definition at line 261 of file sdbapi.c.

262 {
263  TAG tag = SdbGetTagFromTagID(pdb, tagid);
264  if (tag == TAG_NULL)
265  return FALSE;
266  return SdbpCheckTagType(tag, type);
267 }
static PDB pdb
Definition: db.cpp:170
BOOL WINAPI SdbpCheckTagType(TAG tag, WORD type)
Definition: sdbapi.c:254
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
Definition: ecma_167.h:138
#define TAG_NULL
Definition: apphelp.c:43
Definition: fs_rec.h:142
TAG WINAPI SdbGetTagFromTagID(PDB pdb, TAGID tagid)
Definition: sdbread.c:93

Referenced by SdbEndWriteListTag(), SdbGetBinaryTagData(), SdbReadBinaryTag(), SdbReadDWORDTag(), SdbReadQWORDTag(), and SdbReadWORDTag().

◆ SdbpCheckTagType()

BOOL WINAPI SdbpCheckTagType ( TAG  tag,
WORD  type 
)

Definition at line 254 of file sdbapi.c.

255 {
256  if ((tag & TAG_TYPE_MASK) != type)
257  return FALSE;
258  return TRUE;
259 }
#define TRUE
Definition: types.h:120
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
Definition: ecma_167.h:138
#define TAG_TYPE_MASK
Definition: shimdbg.c:106

Referenced by SdbBeginWriteListTag(), SdbpCheckTagIDType(), SdbWriteBinaryTag(), SdbWriteBinaryTagFromFile(), SdbWriteDWORDTag(), SdbWriteNULLTag(), SdbWriteQWORDTag(), SdbWriteStringRefTag(), SdbWriteStringTag(), and SdbWriteWORDTag().

◆ SdbpCloseMemMappedFile()

void WINAPI SdbpCloseMemMappedFile ( PMEMMAPPED  mapping)

Definition at line 244 of file sdbapi.c.

245 {
246  /* Prevent a VAD warning */
247  if (mapping->view)
249  NtClose(mapping->section);
250  NtClose(mapping->file);
251  RtlZeroMemory(mapping, sizeof(*mapping));
252 }
NTSTATUS NTAPI NtUnmapViewOfSection(IN HANDLE ProcessHandle, IN PVOID BaseAddress)
Definition: section.c:3780
#define NtCurrentProcess()
Definition: nt_native.h:1657
GLenum GLenum GLenum GLenum mapping
Definition: glext.h:9031
NTSTATUS NTAPI NtClose(IN HANDLE Handle)
Definition: obhandle.c:3399
#define RtlZeroMemory(Destination, Length)
Definition: typedefs.h:261

Referenced by SdbGetFileAttributes(), and SdbWriteBinaryTagFromFile().

◆ SdbpCreate()

PDB WINAPI SdbpCreate ( LPCWSTR  path,
PATH_TYPE  type,
BOOL  write 
)

Definition at line 93 of file sdbapi.c.

94 {
99  PDB pdb;
100 
101  if (type == DOS_PATH)
102  {
104  return NULL;
105  }
106  else
107  {
109  }
110 
111  /* SdbAlloc zeroes the memory. */
112  pdb = (PDB)SdbAlloc(sizeof(DB));
113  if (!pdb)
114  {
115  SHIM_ERR("Failed to allocate memory for shim database\n");
116  return NULL;
117  }
118 
120 
124 
125  pdb->for_write = write;
126 
127  if (type == DOS_PATH)
129 
130  if (!NT_SUCCESS(Status))
131  {
133  SHIM_ERR("Failed to create shim database file: %lx\n", Status);
134  return NULL;
135  }
136 
137  return pdb;
138 }
#define FILE_GENERIC_READ
Definition: nt_native.h:653
static PDB pdb
Definition: db.cpp:170
Definition: sdbtypes.h:24
LONG NTSTATUS
Definition: precomp.h:26
VOID * PDB
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
#define FILE_SHARE_READ
Definition: compat.h:125
#define write
Definition: acwin.h:73
#define SdbAlloc(size)
Definition: sdbpapi.h:35
const WCHAR * str
smooth NULL
Definition: ftsmooth.c:416
NTSTATUS NTAPI NtCreateFile(OUT PHANDLE FileHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, OUT PIO_STATUS_BLOCK IoStatusBlock, IN PLARGE_INTEGER AllocationSize OPTIONAL, IN ULONG FileAttributes, IN ULONG ShareAccess, IN ULONG CreateDisposition, IN ULONG CreateOptions, IN PVOID EaBuffer OPTIONAL, IN ULONG EaLength)
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
Definition: cookie.c:170
#define OBJ_CASE_INSENSITIVE
Definition: winternl.h:228
#define FILE_ATTRIBUTE_NORMAL
Definition: compat.h:126
__u8 attr
Definition: mkdosfs.c:359
#define FILE_NON_DIRECTORY_FILE
Definition: constants.h:492
#define SYNCHRONIZE
Definition: nt_native.h:61
Status
Definition: gdiplustypes.h:24
#define FILE_GENERIC_WRITE
Definition: nt_native.h:660
#define FILE_OPEN
Definition: from_kernel.h:54
Definition: services.c:325
#define FILE_SYNCHRONOUS_IO_NONALERT
Definition: from_kernel.h:31
void WINAPI SdbCloseDatabase(PDB pdb)
Definition: sdbapi.c:373
#define FILE_SUPERSEDE
Definition: from_kernel.h:53
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define InitializeObjectAttributes(p, n, a, r, s)
Definition: reg.c:106
static HANDLE PIO_APC_ROUTINE PVOID PIO_STATUS_BLOCK io
Definition: file.c:100
NTSYSAPI BOOLEAN NTAPI RtlDosPathNameToNtPathName_U(_In_opt_z_ PCWSTR DosPathName, _Out_ PUNICODE_STRING NtPathName, _Out_opt_ PCWSTR *NtFileNamePart, _Out_opt_ PRTL_RELATIVE_NAME_U DirectoryInfo)

Referenced by SdbCreateDatabase(), and SdbpOpenDatabase().

◆ SdbpFlush()

void WINAPI SdbpFlush ( PDB  pdb)

Definition at line 140 of file sdbapi.c.

141 {
144 
145  ASSERT(pdb->for_write);
146  Status = NtWriteFile(pdb->file, NULL, NULL, NULL, &io,
147  pdb->data, pdb->write_iter, NULL, NULL);
148  if (!NT_SUCCESS(Status))
149  SHIM_WARN("failed with 0x%lx\n", Status);
150 }
static PDB pdb
Definition: db.cpp:170
LONG NTSTATUS
Definition: precomp.h:26
smooth NULL
Definition: ftsmooth.c:416
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
ASSERT((InvokeOnSuccess||InvokeOnError||InvokeOnCancel) ?(CompletionRoutine !=NULL) :TRUE)
NTSYSAPI NTSTATUS NTAPI NtWriteFile(IN HANDLE hFile, IN HANDLE hEvent OPTIONAL, IN PIO_APC_ROUTINE IoApcRoutine OPTIONAL, IN PVOID IoApcContext OPTIONAL, OUT PIO_STATUS_BLOCK pIoStatusBlock, IN PVOID WriteBuffer, IN ULONG WriteBufferLength, IN PLARGE_INTEGER FileOffset OPTIONAL, IN PULONG LockOperationKey OPTIONAL)
Status
Definition: gdiplustypes.h:24
static HANDLE PIO_APC_ROUTINE PVOID PIO_STATUS_BLOCK io
Definition: file.c:100

Referenced by SdbCloseDatabaseWrite().

◆ SdbpFree()

void SdbpFree ( LPVOID  mem)

Definition at line 81 of file sdbapi.c.

86 {
87 #if SDBAPI_DEBUG_ALLOC
88  SdbpRemoveAllocation(mem, line, file);
89 #endif
90  RtlFreeHeap(SdbpHeap(), 0, mem);
91 }
BOOLEAN NTAPI RtlFreeHeap(IN PVOID HeapHandle, IN ULONG Flags, IN PVOID HeapBase)
Definition: heap.c:603
Definition: parser.c:48
static HANDLE SdbpHeap(void)
Definition: sdbapi.c:50
Definition: mem.c:156
Definition: fci.c:126

◆ SdbpHeap()

static HANDLE SdbpHeap ( void  )
static

Definition at line 50 of file sdbapi.c.

51 {
52  return g_Heap;
53 }
static HANDLE g_Heap
Definition: sdbapi.c:33

Referenced by SdbpAlloc(), SdbpFree(), and SdbpReAlloc().

◆ SdbpHeapDeinit()

void SdbpHeapDeinit ( void  )

Definition at line 42 of file sdbapi.c.

43 {
44 #if SDBAPI_DEBUG_ALLOC
45  SdbpDebugHeapDeinit();
46 #endif
48 }
NTSYSAPI PVOID NTAPI RtlDestroyHeap(IN PVOID HeapHandle)
static HANDLE g_Heap
Definition: sdbapi.c:33

Referenced by DllMain().

◆ SdbpHeapInit()

void SdbpHeapInit ( void  )

Definition at line 34 of file sdbapi.c.

35 {
36  g_Heap = RtlCreateHeap(HEAP_GROWABLE, NULL, 0, 0x10000, NULL, NULL);
37 #if SDBAPI_DEBUG_ALLOC
38  SdbpDebugHeapInit(g_Heap);
39 #endif
40 }
smooth NULL
Definition: ftsmooth.c:416
#define HEAP_GROWABLE
Definition: nt_native.h:1693
NTSYSAPI PVOID NTAPI RtlCreateHeap(IN ULONG Flags, IN PVOID HeapBase OPTIONAL, IN ULONG ReserveSize OPTIONAL, IN ULONG CommitSize OPTIONAL, IN PVOID Lock OPTIONAL, IN PRTL_HEAP_PARAMETERS Parameters OPTIONAL)
static HANDLE g_Heap
Definition: sdbapi.c:33

Referenced by DllMain().

◆ SdbpOpenDatabase()

PDB SdbpOpenDatabase ( LPCWSTR  path,
PATH_TYPE  type 
)

Definition at line 269 of file sdbapi.c.

270 {
273  PDB pdb;
275  BYTE header[12];
276 
278  if (!pdb)
279  return NULL;
280 
282  if (!NT_SUCCESS(Status))
283  {
285  SHIM_ERR("Failed to get shim database size: 0x%lx\n", Status);
286  return NULL;
287  }
288 
289  pdb->size = fsi.EndOfFile.u.LowPart;
290  pdb->data = SdbAlloc(pdb->size);
291  Status = NtReadFile(pdb->file, NULL, NULL, NULL, &io, pdb->data, pdb->size, NULL, NULL);
292 
293  if (!NT_SUCCESS(Status))
294  {
296  SHIM_ERR("Failed to open shim database file: 0x%lx\n", Status);
297  return NULL;
298  }
299 
300  if (!SdbpReadData(pdb, &header, 0, 12))
301  {
303  SHIM_ERR("Failed to read shim database header\n");
304  return NULL;
305  }
306 
307  if (memcmp(&header[8], "sdbf", 4) != 0)
308  {
310  SHIM_ERR("Shim database header is invalid\n");
311  return NULL;
312  }
313 
314  pdb->major = *(DWORD*)&header[0];
315  pdb->minor = *(DWORD*)&header[4];
316 
317  return pdb;
318 }
static PDB pdb
Definition: db.cpp:170
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
Definition: utclib.c:112
LONG NTSTATUS
Definition: precomp.h:26
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
BOOL WINAPI SdbpReadData(PDB pdb, PVOID dest, DWORD offset, DWORD num)
Definition: sdbread.c:14
#define SdbAlloc(size)
Definition: sdbpapi.h:35
smooth NULL
Definition: ftsmooth.c:416
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
unsigned long DWORD
Definition: ntddk_ex.h:95
unsigned char BYTE
Definition: mem.h:68
NTSTATUS NTAPI NtQueryInformationFile(HANDLE hFile, PIO_STATUS_BLOCK io, PVOID ptr, ULONG len, FILE_INFORMATION_CLASS FileInformationClass)
Status
Definition: gdiplustypes.h:24
PDB WINAPI SdbpCreate(LPCWSTR path, PATH_TYPE type, BOOL write)
Definition: sdbapi.c:93
struct _LARGE_INTEGER::@2196 u
Definition: services.c:325
#define FileStandardInformation
Definition: propsheet.cpp:61
void WINAPI SdbCloseDatabase(PDB pdb)
Definition: sdbapi.c:373
static HANDLE PIO_APC_ROUTINE PVOID PIO_STATUS_BLOCK io
Definition: file.c:100
struct CFHEADER header
Definition: fdi.c:109
NTSTATUS NTAPI NtReadFile(HANDLE FileHandle, HANDLE Event, PIO_APC_ROUTINE ApcRoutine, PVOID ApcContext, PIO_STATUS_BLOCK IoStatusBlock, PVOID Buffer, ULONG Length, PLARGE_INTEGER ByteOffset, PULONG Key)

Referenced by SdbGetDatabaseVersion(), and SdbOpenDatabase().

◆ SdbpOpenMemMappedFile()

BOOL WINAPI SdbpOpenMemMappedFile ( LPCWSTR  path,
PMEMMAPPED  mapping 
)

Definition at line 170 of file sdbapi.c.

171 {
175  FILE_STANDARD_INFORMATION FileStandard;
177 
178  RtlZeroMemory(mapping, sizeof(*mapping));
179 
181 
184 
186  {
188  {
189  SHIM_ERR("Failed to convert %S to Nt path: 0x%lx\n", path, Status);
190  return FALSE;
191  }
195  }
196 
197  if (!NT_SUCCESS(Status))
198  {
199  SHIM_ERR("Failed to open file %S: 0x%lx\n", path, Status);
200  return FALSE;
201  }
202 
204  if (!NT_SUCCESS(Status))
205  {
206  /* Special case */
208  {
209  NtClose(mapping->file);
210  mapping->file = mapping->section = NULL;
211  return TRUE;
212  }
213  SHIM_ERR("Failed to create mapping for file: 0x%lx\n", Status);
214  goto err_out;
215  }
216 
217  Status = NtQueryInformationFile(mapping->file, &IoStatusBlock, &FileStandard, sizeof(FileStandard), FileStandardInformation);
218  if (!NT_SUCCESS(Status))
219  {
220  SHIM_ERR("Failed to read file info for file: 0x%lx\n", Status);
221  goto err_out;
222  }
223 
224  mapping->mapped_size = mapping->size = FileStandard.EndOfFile.LowPart;
225  Status = NtMapViewOfSection(mapping->section, NtCurrentProcess(), (PVOID*)&mapping->view, 0, 0, 0, &mapping->mapped_size, ViewUnmap, 0, PAGE_READONLY);
226  if (!NT_SUCCESS(Status))
227  {
228  SHIM_ERR("Failed to map view of file: 0x%lx\n", Status);
229  goto err_out;
230  }
231 
232  return TRUE;
233 
234 err_out:
235  if (!mapping->view)
236  {
237  if (mapping->section)
238  NtClose(mapping->section);
239  NtClose(mapping->file);
240  }
241  return FALSE;
242 }
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
Definition: conport.c:35
#define TRUE
Definition: types.h:120
NTSTATUS NTAPI NtCreateSection(OUT PHANDLE SectionHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, IN PLARGE_INTEGER MaximumSize OPTIONAL, IN ULONG SectionPageProtection OPTIONAL, IN ULONG AllocationAttributes, IN HANDLE FileHandle OPTIONAL)
Definition: section.c:3371
#define SECTION_QUERY
Definition: nt_native.h:1287
LONG NTSTATUS
Definition: precomp.h:26
#define FILE_SHARE_READ
Definition: compat.h:125
#define SEC_COMMIT
Definition: mmtypes.h:99
NTSTATUS NTAPI NtMapViewOfSection(IN HANDLE SectionHandle, IN HANDLE ProcessHandle, IN OUT PVOID *BaseAddress, IN ULONG_PTR ZeroBits, IN SIZE_T CommitSize, IN OUT PLARGE_INTEGER SectionOffset OPTIONAL, IN OUT PSIZE_T ViewSize, IN SECTION_INHERIT InheritDisposition, IN ULONG AllocationType, IN ULONG Protect)
Definition: section.c:3552
smooth NULL
Definition: ftsmooth.c:416
#define NtCurrentProcess()
Definition: nt_native.h:1657
NTSYSAPI NTSTATUS NTAPI NtOpenFile(OUT PHANDLE phFile, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, OUT PIO_STATUS_BLOCK pIoStatusBlock, IN ULONG ShareMode, IN ULONG OpenMode)
Definition: file.c:3951
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
GLenum GLenum GLenum GLenum mapping
Definition: glext.h:9031
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
NTSTATUS NTAPI NtClose(IN HANDLE Handle)
Definition: obhandle.c:3399
#define OBJ_CASE_INSENSITIVE
Definition: winternl.h:228
#define SECTION_MAP_READ
Definition: compat.h:128
ULONG LowPart
Definition: typedefs.h:104
#define GENERIC_READ
Definition: compat.h:124
NTSTATUS NTAPI NtQueryInformationFile(HANDLE hFile, PIO_STATUS_BLOCK io, PVOID ptr, ULONG len, FILE_INFORMATION_CLASS FileInformationClass)
#define SYNCHRONIZE
Definition: nt_native.h:61
Status
Definition: gdiplustypes.h:24
struct _FileName FileName
Definition: fatprocs.h:884
Definition: services.c:325
#define STATUS_OBJECT_NAME_INVALID
Definition: udferr_usr.h:148
static OUT PIO_STATUS_BLOCK IoStatusBlock
Definition: pipe.c:75
#define PAGE_READONLY
Definition: compat.h:127
#define FileStandardInformation
Definition: propsheet.cpp:61
#define FILE_SYNCHRONOUS_IO_NONALERT
Definition: from_kernel.h:31
#define STANDARD_RIGHTS_REQUIRED
Definition: nt_native.h:63
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define RtlZeroMemory(Destination, Length)
Definition: typedefs.h:261
#define InitializeObjectAttributes(p, n, a, r, s)
Definition: reg.c:106
#define STATUS_MAPPED_FILE_SIZE_ZERO
Definition: ntstatus.h:508
#define STATUS_OBJECT_PATH_SYNTAX_BAD
Definition: ntstatus.h:281
NTSYSAPI BOOLEAN NTAPI RtlDosPathNameToNtPathName_U(_In_opt_z_ PCWSTR DosPathName, _Out_ PUNICODE_STRING NtPathName, _Out_opt_ PCWSTR *NtFileNamePart, _Out_opt_ PRTL_RELATIVE_NAME_U DirectoryInfo)

Referenced by SdbGetFileAttributes(), and SdbWriteBinaryTagFromFile().

◆ SdbpReAlloc()

LPVOID SdbpReAlloc ( LPVOID  mem,
SIZE_T  size,
SIZE_T  oldSize 
)

Definition at line 68 of file sdbapi.c.

73 {
75 #if SDBAPI_DEBUG_ALLOC
76  SdbpUpdateAllocation(mem, newmem, size, line, file);
77 #endif
78  return newmem;
79 }
NTSYSAPI PVOID WINAPI RtlReAllocateHeap(HANDLE, ULONG, PVOID, SIZE_T)
Definition: heap.c:2561
Definition: parser.c:48
static HANDLE SdbpHeap(void)
Definition: sdbapi.c:50
GLsizeiptr size
Definition: glext.h:5919
#define HEAP_ZERO_MEMORY
Definition: compat.h:123
Definition: mem.c:156
Definition: fci.c:126

◆ SdbpStrDup()

PWSTR SdbpStrDup ( LPCWSTR  string)

Definition at line 162 of file sdbapi.c.

163 {
164  PWSTR ret = SdbAlloc(SdbpStrsize(string));
165  wcscpy(ret, string);
166  return ret;
167 }
uint16_t * PWSTR
Definition: typedefs.h:54
#define SdbAlloc(size)
Definition: sdbpapi.h:35
DWORD SdbpStrsize(PCWSTR string)
Definition: sdbapi.c:157
int ret
_CRTIMP wchar_t *__cdecl wcscpy(_Out_writes_z_(_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)

Referenced by SdbpSetStringAttr(), SeiAppendHookInfo(), SeiAppendInExclude(), and SeiInitPaths().

◆ SdbpStrlen()

DWORD SdbpStrlen ( PCWSTR  string)

Definition at line 152 of file sdbapi.c.

153 {
154  return (DWORD)wcslen(string);
155 }
unsigned long DWORD
Definition: ntddk_ex.h:95
size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)

Referenced by HashAddString(), SdbGetAppPatchDir(), SdbpBuildSignMediaId(), SdbpStrsize(), and Sdbwcscpy().

◆ SdbpStrsize()

DWORD SdbpStrsize ( PCWSTR  string)

Definition at line 157 of file sdbapi.c.

158 {
159  return (SdbpStrlen(string) + 1) * sizeof(WCHAR);
160 }
__wchar_t WCHAR
Definition: xmlstorage.h:180
DWORD SdbpStrlen(PCWSTR string)
Definition: sdbapi.c:152

Referenced by SdbpStrDup().

◆ SdbQueryDataExTagID()

DWORD WINAPI SdbQueryDataExTagID ( PDB  pdb,
TAGID  tiExe,
LPCWSTR  lpszDataName,
LPDWORD  lpdwDataType,
LPVOID  lpBuffer,
LPDWORD  lpcbBufferSize,
TAGID ptiData 
)

Retrieve a Data entry

Parameters
[in]pdbThe database.
[in]tiExeThe tagID to start at
[in,opt]lpszDataName The name of the Data entry to find, or NULL to return all.
[out,opt]lpdwDataType Any of REG_SZ, REG_QWORD, REG_DWORD, ...
[out]lpBufferThe output buffer
[in,out,opt]lpcbBufferSize The size of lpBuffer in bytes
[out,opt]ptiData The tagID of the data
Returns
ERROR_SUCCESS

Definition at line 614 of file sdbapi.c.

615 {
616  TAGID tiData, tiValueType, tiValue;
617  DWORD dwDataType, dwSizeRequired, dwInputSize;
618  LPCWSTR lpStringData;
619  /* Not supported yet */
620  if (!lpszDataName)
622 
624  if (tiData == TAGID_NULL)
625  {
626  SHIM_INFO("No data tag found\n");
627  return ERROR_NOT_FOUND;
628  }
629 
630  if (ptiData)
631  *ptiData = tiData;
632 
633  tiValueType = SdbFindFirstTag(pdb, tiData, TAG_DATA_VALUETYPE);
634  if (tiValueType == TAGID_NULL)
635  {
636  SHIM_WARN("Data tag (0x%x) without valuetype\n", tiData);
638  }
639 
640  dwDataType = SdbReadDWORDTag(pdb, tiValueType, 0);
641  switch (dwDataType)
642  {
643  case REG_SZ:
644  tiValue = SdbFindFirstTag(pdb, tiData, TAG_DATA_STRING);
645  break;
646  case REG_DWORD:
647  tiValue = SdbFindFirstTag(pdb, tiData, TAG_DATA_DWORD);
648  break;
649  case REG_QWORD:
650  tiValue = SdbFindFirstTag(pdb, tiData, TAG_DATA_QWORD);
651  break;
652  default:
653  /* Not supported (yet) */
654  SHIM_WARN("Unsupported dwDataType=0x%x\n", dwDataType);
656  }
657 
658  if (lpdwDataType)
659  *lpdwDataType = dwDataType;
660 
661  if (tiValue == TAGID_NULL)
662  {
663  SHIM_WARN("Data tag (0x%x) without data\n", tiData);
665  }
666 
667  if (dwDataType != REG_SZ)
668  {
669  dwSizeRequired = SdbGetTagDataSize(pdb, tiValue);
670  }
671  else
672  {
673  lpStringData = SdbpGetString(pdb, tiValue, &dwSizeRequired);
674  if (lpStringData == NULL)
675  {
677  }
678  }
679  if (!lpcbBufferSize)
681 
682  dwInputSize = *lpcbBufferSize;
683  *lpcbBufferSize = dwSizeRequired;
684 
685  if (dwInputSize < dwSizeRequired || lpBuffer == NULL)
686  {
687  SHIM_WARN("dwInputSize %u not sufficient to hold %u bytes\n", dwInputSize, dwSizeRequired);
689  }
690 
691  if (dwDataType != REG_SZ)
692  {
693  SdbpReadData(pdb, lpBuffer, tiValue + sizeof(TAG), dwSizeRequired);
694  }
695  else
696  {
697  StringCbCopyNW(lpBuffer, dwInputSize, lpStringData, dwSizeRequired);
698  }
699 
700  return ERROR_SUCCESS;
701 }
#define ERROR_INVALID_PARAMETER
Definition: compat.h:91
#define TAG_NAME
Definition: vfat.h:547
static PDB pdb
Definition: db.cpp:170
#define ERROR_SUCCESS
Definition: deptool.c:10
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185
STRSAFEAPI StringCbCopyNW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPCWSTR pszSrc, size_t cbToCopy)
Definition: strsafe.h:255
DWORD WINAPI SdbReadDWORDTag(PDB pdb, TAGID tagid, DWORD ret)
Definition: sdbread.c:305
BOOL WINAPI SdbpReadData(PDB pdb, PVOID dest, DWORD offset, DWORD num)
Definition: sdbread.c:14
#define TAG_DATA_VALUETYPE
Definition: sdbtagid.h:86
DWORD WINAPI SdbGetTagDataSize(PDB pdb, TAGID tagid)
Definition: sdbread.c:109
#define TAG_DATA_DWORD
Definition: sdbtagid.h:87
static TAGREF LPCWSTR LPDWORD LPVOID lpBuffer
Definition: db.cpp:173
#define TAG_DATA_QWORD
Definition: sdbtagid.h:116
smooth NULL
Definition: ftsmooth.c:416
static TAGREF LPCWSTR lpszDataName
Definition: db.cpp:173
static TAGREF LPCWSTR LPDWORD LPVOID LPDWORD lpcbBufferSize
Definition: db.cpp:173
unsigned long DWORD
Definition: ntddk_ex.h:95
#define TAG_DATA_STRING
Definition: sdbtagid.h:153
TAGID WINAPI SdbFindFirstTag(PDB pdb, TAGID parent, TAG tag)
Definition: sdbread.c:208
#define TAG_DATA
Definition: db.cpp:91
#define REG_SZ
Definition: sdbapi.c:595
static TAGID tiExe
Definition: db.cpp:175
#define TAGID_NULL
Definition: db.cpp:36
TAGID WINAPI SdbFindFirstNamedTag(PDB pdb, TAGID root, TAGID find, TAGID nametag, LPCWSTR find_name)
Definition: sdbapi.c:544
static TAGREF LPCWSTR LPDWORD lpdwDataType
Definition: db.cpp:173
#define ERROR_INTERNAL_DB_CORRUPTION
Definition: winerror.h:839
#define ERROR_NOT_FOUND
Definition: winerror.h:690
Definition: fs_rec.h:142
#define REG_QWORD
Definition: sdbapi.c:597
static TAGID LPCWSTR LPDWORD LPVOID LPDWORD TAGID * ptiData
Definition: db.cpp:175
DWORD TAGID
#define REG_DWORD
Definition: sdbapi.c:596
LPWSTR WINAPI SdbpGetString(PDB pdb, TAGID tagid, PDWORD size)
Definition: sdbread.c:47
#define ERROR_INSUFFICIENT_BUFFER
Definition: dderror.h:10

Referenced by SdbQueryDataEx().

◆ SdbTagToString()

LPCWSTR WINAPI SdbTagToString ( TAG  tag)

Converts specified tag into a string.

Parameters
[in]tagThe tag which will be converted to a string.
Returns
Success: Pointer to the string matching specified tag, or L"InvalidTag" on failure.

Definition at line 752 of file sdbapi.c.

753 {
754  switch (tag)
755  {
756  case TAG_NULL: return L"NULL";
757 
758  /* TAG_TYPE_NULL */
759  case TAG_INCLUDE: return L"INCLUDE";
760  case TAG_GENERAL: return L"GENERAL";
761  case TAG_MATCH_LOGIC_NOT: return L"MATCH_LOGIC_NOT";
762  case TAG_APPLY_ALL_SHIMS: return L"APPLY_ALL_SHIMS";
763  case TAG_USE_SERVICE_PACK_FILES: return L"USE_SERVICE_PACK_FILES";
764  case TAG_MITIGATION_OS: return L"MITIGATION_OS";
765  case TAG_BLOCK_UPGRADE: return L"BLOCK_UPGRADE";
766  case TAG_INCLUDEEXCLUDEDLL: return L"INCLUDEEXCLUDEDLL";
767  case TAG_RAC_EVENT_OFF: return L"RAC_EVENT_OFF";
768  case TAG_TELEMETRY_OFF: return L"TELEMETRY_OFF";
769  case TAG_SHIM_ENGINE_OFF: return L"SHIM_ENGINE_OFF";
770  case TAG_LAYER_PROPAGATION_OFF: return L"LAYER_PROPAGATION_OFF";
771  case TAG_REINSTALL_UPGRADE: return L"REINSTALL_UPGRADE";
772 
773  /* TAG_TYPE_WORD */
774  case TAG_MATCH_MODE: return L"MATCH_MODE";
775  case TAG_TAG: return L"TAG";
776  case TAG_INDEX_TAG: return L"INDEX_TAG";
777  case TAG_INDEX_KEY: return L"INDEX_KEY";
778 
779  /* TAG_TYPE_DWORD */
780  case TAG_SIZE: return L"SIZE";
781  case TAG_OFFSET: return L"OFFSET";
782  case TAG_CHECKSUM: return L"CHECKSUM";
783  case TAG_SHIM_TAGID: return L"SHIM_TAGID";
784  case TAG_PATCH_TAGID: return L"PATCH_TAGID";
785  case TAG_MODULE_TYPE: return L"MODULE_TYPE";
786  case TAG_VERDATEHI: return L"VERDATEHI";
787  case TAG_VERDATELO: return L"VERDATELO";
788  case TAG_VERFILEOS: return L"VERFILEOS";
789  case TAG_VERFILETYPE: return L"VERFILETYPE";
790  case TAG_PE_CHECKSUM: return L"PE_CHECKSUM";
791  case TAG_PREVOSMAJORVER: return L"PREVOSMAJORVER";
792  case TAG_PREVOSMINORVER: return L"PREVOSMINORVER";
793  case TAG_PREVOSPLATFORMID: return L"PREVOSPLATFORMID";
794  case TAG_PREVOSBUILDNO: return L"PREVOSBUILDNO";
795  case TAG_PROBLEMSEVERITY: return L"PROBLEMSEVERITY";
796  case TAG_LANGID: return L"LANGID";
797  case TAG_VER_LANGUAGE: return L"VER_LANGUAGE";
798  case TAG_ENGINE: return L"ENGINE";
799  case TAG_HTMLHELPID: return L"HTMLHELPID";
800  case TAG_INDEX_FLAGS: return L"INDEX_FLAGS";
801  case TAG_FLAGS: return L"FLAGS";
802  case TAG_DATA_VALUETYPE: return L"DATA_VALUETYPE";
803  case TAG_DATA_DWORD: return L"DATA_DWORD";
804  case TAG_LAYER_TAGID: return L"LAYER_TAGID";
805  case TAG_MSI_TRANSFORM_TAGID: return L"MSI_TRANSFORM_TAGID";
806  case TAG_LINKER_VERSION: return L"LINKER_VERSION";
807  case TAG_LINK_DATE: return L"LINK_DATE";
808  case TAG_UPTO_LINK_DATE: return L"UPTO_LINK_DATE";
809  case TAG_OS_SERVICE_PACK: return L"OS_SERVICE_PACK";
810  case TAG_FLAG_TAGID: return L"FLAG_TAGID";
811  case TAG_RUNTIME_PLATFORM: return L"RUNTIME_PLATFORM";
812  case TAG_OS_SKU: return L"OS_SKU";
813  case TAG_OS_PLATFORM: return L"OS_PLATFORM";
814  case TAG_APP_NAME_RC_ID: return L"APP_NAME_RC_ID";
815  case TAG_VENDOR_NAME_RC_ID: return L"VENDOR_NAME_RC_ID";
816  case TAG_SUMMARY_MSG_RC_ID: return L"SUMMARY_MSG_RC_ID";
817  case TAG_VISTA_SKU: return L"VISTA_SKU";
818  case TAG_DESCRIPTION_RC_ID: return L"DESCRIPTION_RC_ID";
819  case TAG_PARAMETER1_RC_ID: return L"PARAMETER1_RC_ID";
820  case TAG_CONTEXT_TAGID: return L"CONTEXT_TAGID";
821  case TAG_EXE_WRAPPER: return L"EXE_WRAPPER";
822  case TAG_URL_ID: return L"URL_ID";
823  case TAG_TAGID: return L"TAGID";
824 
825  /* TAG_TYPE_QWORD */
826  case TAG_TIME: return L"TIME";
827  case TAG_BIN_FILE_VERSION: return L"BIN_FILE_VERSION";
828  case TAG_BIN_PRODUCT_VERSION: return L"BIN_PRODUCT_VERSION";
829  case TAG_MODTIME: return L"MODTIME";
830  case TAG_FLAG_MASK_KERNEL: return L"FLAG_MASK_KERNEL";
831  case TAG_UPTO_BIN_PRODUCT_VERSION: return L"UPTO_BIN_PRODUCT_VERSION";
832  case TAG_DATA_QWORD: return L"DATA_QWORD";
833  case TAG_FLAG_MASK_USER: return L"FLAG_MASK_USER";
834  case TAG_FLAGS_NTVDM1: return L"FLAGS_NTVDM1";
835  case TAG_FLAGS_NTVDM2: return L"FLAGS_NTVDM2";
836  case TAG_FLAGS_NTVDM3: return L"FLAGS_NTVDM3";
837  case TAG_FLAG_MASK_SHELL: return L"FLAG_MASK_SHELL";
838  case TAG_UPTO_BIN_FILE_VERSION: return L"UPTO_BIN_FILE_VERSION";
839  case TAG_FLAG_MASK_FUSION: return L"FLAG_MASK_FUSION";
840  case TAG_FLAG_PROCESSPARAM: return L"FLAG_PROCESSPARAM";
841  case TAG_FLAG_LUA: return L"FLAG_LUA";
842  case TAG_FLAG_INSTALL: return L"FLAG_INSTALL";
843 
844  /* TAG_TYPE_STRINGREF */
845  case TAG_NAME: return L"NAME";
846  case TAG_DESCRIPTION: return L"DESCRIPTION";
847  case TAG_MODULE: return L"MODULE";
848  case TAG_API: return L"API";
849  case TAG_VENDOR: return L"VENDOR";
850  case TAG_APP_NAME: return L"APP_NAME";
851  case TAG_COMMAND_LINE: return L"COMMAND_LINE";
852  case TAG_COMPANY_NAME: return L"COMPANY_NAME";
853  case TAG_DLLFILE: return L"DLLFILE";
854  case TAG_WILDCARD_NAME: return L"WILDCARD_NAME";
855  case TAG_PRODUCT_NAME: return L"PRODUCT_NAME";
856  case TAG_PRODUCT_VERSION: return L"PRODUCT_VERSION";
857  case TAG_FILE_DESCRIPTION: return L"FILE_DESCRIPTION";
858  case TAG_FILE_VERSION: return L"FILE_VERSION";
859  case TAG_ORIGINAL_FILENAME: return L"ORIGINAL_FILENAME";
860  case TAG_INTERNAL_NAME: return L"INTERNAL_NAME";
861  case TAG_LEGAL_COPYRIGHT: return L"LEGAL_COPYRIGHT";
862  case TAG_16BIT_DESCRIPTION: return L"16BIT_DESCRIPTION";
863  case TAG_APPHELP_DETAILS: return L"APPHELP_DETAILS";
864  case TAG_LINK_URL: return L"LINK_URL";
865  case TAG_LINK_TEXT: return L"LINK_TEXT";
866  case TAG_APPHELP_TITLE: return L"APPHELP_TITLE";
867  case TAG_APPHELP_CONTACT: return L"APPHELP_CONTACT";
868  case TAG_SXS_MANIFEST: return L"SXS_MANIFEST";
869  case TAG_DATA_STRING: return L"DATA_STRING";
870  case TAG_MSI_TRANSFORM_FILE: return L"MSI_TRANSFORM_FILE";
871  case TAG_16BIT_MODULE_NAME: return L"16BIT_MODULE_NAME";
872  case TAG_LAYER_DISPLAYNAME: return L"LAYER_DISPLAYNAME";
873  case TAG_COMPILER_VERSION: return L"COMPILER_VERSION";
874  case TAG_ACTION_TYPE: return L"ACTION_TYPE";
875  case TAG_EXPORT_NAME: return L"EXPORT_NAME";
876  case TAG_URL: return L"URL";
877 
878  /* TAG_TYPE_LIST */
879  case TAG_DATABASE: return L"DATABASE";
880  case TAG_LIBRARY: return L"LIBRARY";
881  case TAG_INEXCLUD: return L"INEXCLUDE";
882  case TAG_SHIM: return L"SHIM";
883  case TAG_PATCH: return L"PATCH";
884  case TAG_APP: return L"APP";
885  case TAG_EXE: return L"EXE";
886  case TAG_MATCHING_FILE: return L"MATCHING_FILE";
887  case TAG_SHIM_REF: return L"SHIM_REF";
888  case TAG_PATCH_REF: return L"PATCH_REF";
889  case TAG_LAYER: return L"LAYER";
890  case TAG_FILE: return L"FILE";
891  case TAG_APPHELP: return L"APPHELP";
892  case TAG_LINK: return L"LINK";
893  case TAG_DATA: return L"DATA";
894  case TAG_MSI_TRANSFORM: return L"MSI_TRANSFORM";
895  case TAG_MSI_TRANSFORM_REF: return L"MSI_TRANSFORM_REF";
896  case TAG_MSI_PACKAGE: return L"MSI_PACKAGE";
897  case TAG_FLAG: return L"FLAG";
898  case TAG_MSI_CUSTOM_ACTION: return L"MSI_CUSTOM_ACTION";
899  case TAG_FLAG_REF: return L"FLAG_REF";
900  case TAG_ACTION: return L"ACTION";
901  case TAG_LOOKUP: return L"LOOKUP";
902  case TAG_CONTEXT: return L"CONTEXT";
903  case TAG_CONTEXT_REF: return L"CONTEXT_REF";
904  case TAG_SPC: return L"SPC";
905  case TAG_STRINGTABLE: return L"STRINGTABLE";
906  case TAG_INDEXES: return L"INDEXES";
907  case TAG_INDEX: return L"INDEX";
908 
909  /* TAG_TYPE_STRING */
910  case TAG_STRINGTABLE_ITEM: return L"STRINGTABLE_ITEM";
911 
912  /* TAG_TYPE_BINARY */
913  case TAG_PATCH_BITS: return L"PATCH_BITS";
914  case TAG_FILE_BITS: return L"FILE_BITS";
915  case TAG_EXE_ID: return L"EXE_ID";
916  case TAG_DATA_BITS: return L"DATA_BITS";
917  case TAG_MSI_PACKAGE_ID: return L"MSI_PACKAGE_ID";
918  case TAG_DATABASE_ID: return L"DATABASE_ID";
919  case TAG_CONTEXT_PLATFORM_ID: return L"CONTEXT_PLATFORM_ID";
920  case TAG_CONTEXT_BRANCH_ID: return L"CONTEXT_BRANCH_ID";
921  case TAG_FIX_ID: return L"FIX_ID";
922  case TAG_APP_ID: return L"APP_ID";
923  case TAG_INDEX_BITS: return L"INDEX_BITS";
924 
925  break;
926  }
927  return L"InvalidTag";
928 }
#define TAG_PREVOSBUILDNO
Definition: sdbtagid.h:78
#define TAG_OS_SKU
Definition: sdbtagid.h:96
#define TAG_INTERNAL_NAME
Definition: apphelp.c:68
#define TAG_ACTION
Definition: sdbtagid.h:184
#define TAG_WILDCARD_NAME
Definition: db.cpp:102
#define TAG_URL
Definition: sdbtagid.h:160
#define TAG_REINSTALL_UPGRADE
Definition: sdbtagid.h:53
#define TAG_HTMLHELPID
Definition: db.cpp:65
#define TAG_16BIT_DESCRIPTION
Definition: apphelp.c:70
#define TAG_OS_PLATFORM
Definition: db.cpp:74
#define TAG_FILE_VERSION
Definition: apphelp.c:66
#define TAG_NAME
Definition: vfat.h:547
#define TAG_INCLUDE
Definition: db.cpp:54
#define TAG_URL_ID
Definition: sdbtagid.h:106
#define TAG_APP
Definition: sdbtagid.h:168
#define TAG_MSI_TRANSFORM
Definition: sdbtagid.h:178
#define TAG_APP_ID
Definition: sdbtagid.h:206
#define TAG_LINK
Definition: db.cpp:90
#define TAG_SHIM
Definition: apphelp.c:42
#define TAG_MODTIME
Definition: sdbtagid.h:113
#define TAG_LIBRARY
Definition: sdbtagid.h:164
#define TAG_EXE_WRAPPER
Definition: apphelp.c:56
#define TAG_FLAGS_NTVDM1
Definition: sdbtagid.h:118
#define TAG_FLAG
Definition: sdbtagid.h:181
#define TAG_VER_LANGUAGE
Definition: apphelp.c:52
#define TAG_BIN_PRODUCT_VERSION
Definition: apphelp.c:58
#define TAG_VERFILEOS
Definition: apphelp.c:49
#define TAG_LAYER_TAGID
Definition: db.cpp:67
#define TAG_EXE_ID
Definition: db.cpp:118
#define TAG_MATCH_LOGIC_NOT
Definition: sdbtagid.h:43
#define TAG_DATABASE
Definition: db.cpp:83
#define TAG_GENERAL
Definition: db.cpp:116
#define TAG_TELEMETRY_OFF
Definition: sdbtagid.h:50
#define TAG_CONTEXT
Definition: sdbtagid.h:186
#define TAG_USE_SERVICE_PACK_FILES
Definition: sdbtagid.h:45
#define TAG_RUNTIME_PLATFORM
Definition: sdbtagid.h:95
#define TAG_FLAG_MASK_SHELL
Definition: sdbtagid.h:121
Definition: ecma_167.h:138
#define TAG_COMMAND_LINE
Definition: db.cpp:100
#define TAG_MSI_TRANSFORM_TAGID
Definition: sdbtagid.h:89
#define TAG_APP_NAME
Definition: db.cpp:99
#define TAG_PRODUCT_NAME
Definition: apphelp.c:63
#define TAG_FLAG_PROCESSPARAM
Definition: sdbtagid.h:124
#define TAG_DATA_VALUETYPE
Definition: sdbtagid.h:86
#define TAG_PATCH
Definition: sdbtagid.h:167
#define TAG_LAYER_PROPAGATION_OFF
Definition: sdbtagid.h:52
#define TAG_NULL
Definition: apphelp.c:43
#define TAG_FLAG_INSTALL
Definition: sdbtagid.h:126
#define TAG_MATCHING_FILE
Definition: db.cpp:86
#define TAG_CONTEXT_PLATFORM_ID
Definition: sdbtagid.h:203
#define TAG_TAG
Definition: sdbtagid.h:59
#define TAG_VENDOR
Definition: db.cpp:98
#define TAG_LINK_URL
Definition: db.cpp:111
#define TAG_EXE
Definition: db.cpp:85
#define TAG_SIZE
Definition: apphelp.c:44
#define TAG_MITIGATION_OS
Definition: sdbtagid.h:46
#define TAG_FILE_BITS
Definition: sdbtagid.h:198
#define TAG_INEXCLUD
Definition: db.cpp:84
#define TAG_PRODUCT_VERSION
Definition: apphelp.c:64
#define TAG_DLLFILE
Definition: sdbtagid.h:137
#define TAG_MODULE
Definition: db.cpp:97
#define TAG_INDEX_BITS
Definition: sdbtagid.h:207
#define TAG_STRINGTABLE
Definition: db.cpp:92
#define TAG_VERDATEHI
Definition: apphelp.c:47
#define TAG_DATA_DWORD
Definition: sdbtagid.h:87
#define TAG_LANGID
Definition: sdbtagid.h:80
#define TAG_ACTION_TYPE
Definition: sdbtagid.h:158
#define TAG_FLAG_MASK_KERNEL
Definition: sdbtagid.h:114
#define TAG_MSI_CUSTOM_ACTION
Definition: sdbtagid.h:182
#define TAG_APPHELP_DETAILS
Definition: db.cpp:110
#define TAG_BIN_FILE_VERSION
Definition: apphelp.c:57
#define TAG_INDEX_TAG
Definition: sdbtagid.h:60
#define TAG_OFFSET
Definition: sdbtagid.h:65
#define TAG_DATA_QWORD
Definition: sdbtagid.h:116
#define TAG_FLAG_LUA
Definition: db.cpp:81
#define TAG_PROBLEMSEVERITY
Definition: db.cpp:64
#define TAG_LINK_TEXT
Definition: sdbtagid.h:149
#define TAG_PE_CHECKSUM
Definition: apphelp.c:51
#define TAG_FILE_DESCRIPTION
Definition: apphelp.c:65
#define TAG_APPHELP_CONTACT
Definition: sdbtagid.h:151
#define TAG_FLAG_MASK_FUSION
Definition: sdbtagid.h:123
#define TAG_CHECKSUM
Definition: apphelp.c:45
#define TAG_API
Definition: sdbtagid.h:132
#define TAG_FIX_ID
Definition: sdbtagid.h:205
#define TAG_FLAGS_NTVDM2
Definition: sdbtagid.h:119
#define TAG_SPC
Definition: sdbtagid.h:188
#define TAG_FILE
Definition: sdbtagid.h:174
#define TAG_SHIM_TAGID
Definition: sdbtagid.h:67
#define TAG_LEGAL_COPYRIGHT
Definition: apphelp.c:69
#define TAG_COMPANY_NAME
Definition: apphelp.c:62
#define TAG_APP_NAME_RC_ID
Definition: db.cpp:71
#define TAG_DATA_BITS
Definition: db.cpp:119
#define TAG_PREVOSMINORVER
Definition: sdbtagid.h:76
#define TAG_CONTEXT_TAGID
Definition: sdbtagid.h:104
#define TAG_VENDOR_NAME_RC_ID
Definition: db.cpp:72
#define TAG_FLAG_TAGID
Definition: sdbtagid.h:94
#define TAG_DATA_STRING
Definition: sdbtagid.h:153
#define TAG_VERFILETYPE
Definition: apphelp.c:50
#define TAG_TAGID
Definition: sdbtagid.h:107
#define TAG_DATA
Definition: db.cpp:91
#define TAG_CONTEXT_BRANCH_ID
Definition: sdbtagid.h:204
#define TAG_FLAGS
Definition: db.cpp:66
#define TAG_MSI_TRANSFORM_FILE
Definition: sdbtagid.h:154
static const WCHAR L[]
Definition: oid.c:1250
#define TAG_PREVOSPLATFORMID
Definition: sdbtagid.h:77
#define TAG_SHIM_REF
Definition: db.cpp:87
#define TAG_MSI_PACKAGE_ID
Definition: sdbtagid.h:201
#define TAG_ORIGINAL_FILENAME
Definition: apphelp.c:67
#define TAG_VISTA_SKU
Definition: sdbtagid.h:101
#define TAG_STRINGTABLE_ITEM
Definition: db.cpp:94
#define TAG_FLAGS_NTVDM3
Definition: sdbtagid.h:120
#define TAG_UPTO_BIN_PRODUCT_VERSION
Definition: apphelp.c:59
#define TAG_SUMMARY_MSG_RC_ID
Definition: db.cpp:73
#define TAG_SHIM_ENGINE_OFF
Definition: sdbtagid.h:51
#define TAG_PREVOSMAJORVER
Definition: sdbtagid.h:75
#define TAG_MODULE_TYPE
Definition: apphelp.c:46
#define TAG_DESCRIPTION_RC_ID
Definition: sdbtagid.h:102
#define TAG_16BIT_MODULE_NAME
Definition: apphelp.c:71
#define TAG_APPHELP_TITLE
Definition: db.cpp:112
#define TAG_INDEX_KEY
Definition: sdbtagid.h:61
#define TAG_CONTEXT_REF
Definition: sdbtagid.h:187
#define TAG_LINK_DATE
Definition: apphelp.c:54
#define TAG_PARAMETER1_RC_ID
Definition: sdbtagid.h:103
#define TAG_SXS_MANIFEST
Definition: sdbtagid.h:152
#define TAG_DESCRIPTION
Definition: sdbtagid.h:130
#define TAG_LAYER_DISPLAYNAME
Definition: sdbtagid.h:156
#define TAG_LAYER
Definition: db.cpp:88
#define TAG_INDEX
Definition: sdbtagid.h:191
#define TAG_TIME
Definition: db.cpp:76
#define TAG_UPTO_BIN_FILE_VERSION
Definition: apphelp.c:60
#define TAG_MSI_TRANSFORM_REF
Definition: sdbtagid.h:179
#define TAG_RAC_EVENT_OFF
Definition: sdbtagid.h:49
#define TAG_APPHELP
Definition: db.cpp:89
#define TAG_ENGINE
Definition: sdbtagid.h:82
#define TAG_COMPILER_VERSION
Definition: db.cpp:114
#define TAG_FLAG_REF
Definition: sdbtagid.h:183
#define TAG_INDEXES
Definition: sdbtagid.h:190
#define TAG_VERDATELO
Definition: apphelp.c:48
#define TAG_DATABASE_ID
Definition: db.cpp:120
#define TAG_UPTO_LINK_DATE
Definition: apphelp.c:55
#define TAG_OS_SERVICE_PACK
Definition: sdbtagid.h:93
#define TAG_FLAG_MASK_USER
Definition: sdbtagid.h:117
#define TAG_EXPORT_NAME
Definition: apphelp.c:72
#define TAG_APPLY_ALL_SHIMS
Definition: sdbtagid.h:44
#define TAG_MSI_PACKAGE
Definition: sdbtagid.h:180
#define TAG_MATCH_MODE
Definition: db.cpp:56
#define TAG_LINKER_VERSION
Definition: apphelp.c:53
#define TAG_PATCH_TAGID
Definition: sdbtagid.h:68
#define TAG_LOOKUP
Definition: sdbtagid.h:185
#define TAG_PATCH_REF
Definition: sdbtagid.h:172
#define TAG_INDEX_FLAGS
Definition: sdbtagid.h:84
#define TAG_PATCH_BITS
Definition: sdbtagid.h:197
#define TAG_BLOCK_UPGRADE
Definition: sdbtagid.h:47
#define TAG_INCLUDEEXCLUDEDLL
Definition: sdbtagid.h:48

Referenced by InitApphelp(), SdbpMatchFileAttributes(), and START_TEST().

Variable Documentation

◆ g_Heap

HANDLE g_Heap
static

Definition at line 33 of file sdbapi.c.

Referenced by SdbpHeap(), SdbpHeapDeinit(), and SdbpHeapInit().

◆ GUID_DATABASE_DRIVERS

const GUID GUID_DATABASE_DRIVERS = {0xf9ab2228,0x3312,0x4a73, {0xb6,0xf9,0x93,0x6d,0x70,0xe1,0x12,0xef}}
static

Definition at line 18 of file sdbapi.c.

Referenced by SdbGetStandardDatabaseGUID(), and test_GuidFunctions().

◆ GUID_DATABASE_MSI

const GUID GUID_DATABASE_MSI = {0xd8ff6d16,0x6a3a,0x468a, {0x8b,0x44,0x01,0x71,0x4d,0xdc,0x49,0xea}}
static

Definition at line 16 of file sdbapi.c.

Referenced by SdbGetStandardDatabaseGUID(), and test_GuidFunctions().

◆ GUID_DATABASE_SHIM

const GUID GUID_DATABASE_SHIM = {0x11111111,0x1111,0x1111, {0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11}}
static

Definition at line 17 of file sdbapi.c.

Referenced by SdbGetStandardDatabaseGUID(), and test_GuidFunctions().