mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-09-02 19:26:32 +00:00
[ADVAPI32] -RegOpenKeyExW: Call NtOpenKey again with aligned parameters if STATUS_DATATYPE_MISALIGNMENT was returned the first time. CORE-13689
svn path=/trunk/; revision=75592
This commit is contained in:
@@ -3429,6 +3429,39 @@ RegOpenKeyExW(HKEY hKey,
|
||||
samDesired,
|
||||
&ObjectAttributes);
|
||||
|
||||
if (Status == STATUS_DATATYPE_MISALIGNMENT)
|
||||
{
|
||||
HANDLE hAligned;
|
||||
UNICODE_STRING AlignedString;
|
||||
|
||||
Status = RtlDuplicateUnicodeString(RTL_DUPLICATE_UNICODE_STRING_NULL_TERMINATE,
|
||||
&SubKeyString,
|
||||
&AlignedString);
|
||||
if (NT_SUCCESS(Status))
|
||||
{
|
||||
/* Try again with aligned parameters */
|
||||
InitializeObjectAttributes(&ObjectAttributes,
|
||||
&AlignedString,
|
||||
Attributes,
|
||||
KeyHandle,
|
||||
NULL);
|
||||
|
||||
Status = NtOpenKey(&hAligned,
|
||||
samDesired,
|
||||
&ObjectAttributes);
|
||||
|
||||
RtlFreeUnicodeString(&AlignedString);
|
||||
|
||||
if (NT_SUCCESS(Status))
|
||||
*phkResult = hAligned;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Restore the original error */
|
||||
Status = STATUS_DATATYPE_MISALIGNMENT;
|
||||
}
|
||||
}
|
||||
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
ErrorCode = RtlNtStatusToDosError(Status);
|
||||
|
||||
Reference in New Issue
Block a user