32#define VS_VERSION_INFO 1
33#define VS_FILE_INFO RT_VERSION
42 ResourceInfo.
Type = 16;
52 DPRINT1(
"NtGetVersionResource: Version resource not found, Status 0x%08lx\n",
Status);
63 DPRINT1(
"NtGetVersionResource: Cannot access Version resource, Status 0x%08lx\n",
Status);
68 if (ResourceSize) *ResourceSize =
Size;
89#define DWORD_ALIGN( base, ptr ) \
90 ( (ULONG_PTR)(base) + ((((ULONG_PTR)(ptr) - (ULONG_PTR)(base)) + 3) & ~3) )
92#define VersionInfo32_Value( ver ) \
93 DWORD_ALIGN( (ver), (ver)->szKey + wcslen((ver)->szKey) + 1 )
95#define VersionInfo32_Children( ver ) \
96 (PCVS_VERSION_INFO_STRUCT32)( VersionInfo32_Value( ver ) + \
97 ( ( (ver)->wValueLength * \
98 ((ver)->wType? 2 : 1) + 3 ) & ~3 ) )
100#define VersionInfo32_Next( ver ) \
101 (PVS_VERSION_INFO_STRUCT32)( (ULONG_PTR)ver + (((ver)->wLength + 3) & ~3) )
133 DPRINT(
"lpSubBlock : (%S)\n", lpSubBlock);
138 for (lpNextSlash = lpSubBlock; *lpNextSlash; lpNextSlash++)
140 if (*lpNextSlash ==
'\\')
145 if (lpNextSlash == lpSubBlock)
155 if (puLen) *puLen = 0;
160 lpSubBlock = lpNextSlash;
166 *puLen =
info->wValueLength;
168 *pbText =
info->wType;
187 if (!lpSubBlock || !*lpSubBlock)
_Acquires_exclusive_lock_ Resource _Acquires_shared_lock_ Resource _Inout_ PERESOURCE Resource
#define NT_SUCCESS(StatCode)
NTSTATUS NTAPI LdrAccessResource(_In_ PVOID BaseAddress, _In_ PIMAGE_RESOURCE_DATA_ENTRY ResourceDataEntry, _Out_opt_ PVOID *Resource, _Out_opt_ PULONG Size)
NTSTATUS NTAPI LdrFindResource_U(_In_ PVOID BaseAddress, _In_ PLDR_RESOURCE_INFO ResourceInfo, _In_ ULONG Level, _Out_ PIMAGE_RESOURCE_DATA_ENTRY *ResourceDataEntry)
#define RESOURCE_DATA_LEVEL
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize PVOID * BaseAddress
#define STATUS_RESOURCE_TYPE_NOT_FOUND
#define VersionInfo32_Next(ver)
struct _VS_VERSION_INFO_STRUCT32 VS_VERSION_INFO_STRUCT32
const VS_VERSION_INFO_STRUCT32 * PCVS_VERSION_INFO_STRUCT32
#define VersionInfo32_Value(ver)
NTSTATUS NtGetVersionResource(IN PVOID BaseAddress, OUT PVOID *Resource, OUT PULONG ResourceSize OPTIONAL)
static NTSTATUS VersionInfo32_QueryValue(IN PCVS_VERSION_INFO_STRUCT32 info, IN PCWSTR lpSubBlock, OUT PVOID *lplpBuffer, OUT PUINT puLen OPTIONAL, OUT BOOL *pbText OPTIONAL)
static PCVS_VERSION_INFO_STRUCT32 VersionInfo32_FindChild(IN PCVS_VERSION_INFO_STRUCT32 info, IN PCWSTR szKey, IN UINT cchKey)
#define VersionInfo32_Children(ver)
NTSTATUS NtVerQueryValue(IN const VOID *pBlock, IN PCWSTR lpSubBlock, OUT PVOID *lplpBuffer, OUT PUINT puLen)
struct _VS_VERSION_INFO_STRUCT32 * PVS_VERSION_INFO_STRUCT32
_Check_return_ _CRTIMP int __cdecl _wcsnicmp(_In_reads_or_z_(_MaxCount) const wchar_t *_Str1, _In_reads_or_z_(_MaxCount) const wchar_t *_Str2, _In_ size_t _MaxCount)
PULONG MinorVersion OPTIONAL
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value