25#define MAKEINTRESOURCE(i) ((ULONG_PTR)(USHORT)(i))
26#define RT_VERSION MAKEINTRESOURCE(16)
27#define VS_VERSION_INFO 1
28#define VS_FILE_INFO RT_VERSION
53 DPRINT1(
"NtGetVersionResource: Version resource not found, Status 0x%08lx\n",
Status);
64 DPRINT1(
"NtGetVersionResource: Cannot access Version resource, Status 0x%08lx\n",
Status);
69 if (ResourceSize) *ResourceSize =
Size;
90#define DWORD_ALIGN( base, ptr ) \
91 ( (ULONG_PTR)(base) + ((((ULONG_PTR)(ptr) - (ULONG_PTR)(base)) + 3) & ~3) )
93#define VersionInfo32_Value( ver ) \
94 DWORD_ALIGN( (ver), (ver)->szKey + wcslen((ver)->szKey) + 1 )
96#define VersionInfo32_Children( ver ) \
97 (PCVS_VERSION_INFO_STRUCT32)( VersionInfo32_Value( ver ) + \
98 ( ( (ver)->wValueLength * \
99 ((ver)->wType? 2 : 1) + 3 ) & ~3 ) )
101#define VersionInfo32_Next( ver ) \
102 (PVS_VERSION_INFO_STRUCT32)( (ULONG_PTR)ver + (((ver)->wLength + 3) & ~3) )
134 DPRINT(
"lpSubBlock : (%S)\n", lpSubBlock);
139 for (lpNextSlash = lpSubBlock; *lpNextSlash; lpNextSlash++)
141 if (*lpNextSlash ==
'\\')
146 if (lpNextSlash == lpSubBlock)
156 if (puLen) *puLen = 0;
161 lpSubBlock = lpNextSlash;
167 *puLen =
info->wValueLength;
169 *pbText =
info->wType;
188 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