X-Git-Url: https://git.reactos.org/?p=reactos.git;a=blobdiff_plain;f=dll%2Fappcompat%2Fapphelp%2Fsdbapi.c;h=ba60048ca5dd06dfa92d4fe3f4098bf872000750;hp=f7d01f99356063471cebdb09dca91cbdf96f4b7a;hb=0123f4745b359983fb6c0c47bc5f71d60be87c6f;hpb=c2c66aff7dacc62d125f2cd61d1167e9a2aa3fd6 diff --git a/dll/appcompat/apphelp/sdbapi.c b/dll/appcompat/apphelp/sdbapi.c index f7d01f99356..ba60048ca5d 100644 --- a/dll/appcompat/apphelp/sdbapi.c +++ b/dll/appcompat/apphelp/sdbapi.c @@ -177,15 +177,22 @@ BOOL WINAPI SdbpOpenMemMappedFile(LPCWSTR path, PMEMMAPPED mapping) RtlZeroMemory(mapping, sizeof(*mapping)); - if(!RtlDosPathNameToNtPathName_U(path, &FileName, NULL, NULL)) - { - RtlFreeUnicodeString(&FileName); - return FALSE; - } + RtlInitUnicodeString(&FileName, path); InitializeObjectAttributes(&ObjectAttributes, &FileName, OBJ_CASE_INSENSITIVE, NULL, NULL); Status = NtOpenFile(&mapping->file, GENERIC_READ | SYNCHRONIZE, &ObjectAttributes, &IoStatusBlock, FILE_SHARE_READ, FILE_SYNCHRONOUS_IO_NONALERT); - RtlFreeUnicodeString(&FileName); + + if (Status == STATUS_OBJECT_NAME_INVALID || Status == STATUS_OBJECT_PATH_SYNTAX_BAD) + { + if (!RtlDosPathNameToNtPathName_U(path, &FileName, NULL, NULL)) + { + SHIM_ERR("Failed to convert %S to Nt path: 0x%lx\n", path, Status); + return FALSE; + } + InitializeObjectAttributes(&ObjectAttributes, &FileName, OBJ_CASE_INSENSITIVE, NULL, NULL); + Status = NtOpenFile(&mapping->file, GENERIC_READ | SYNCHRONIZE, &ObjectAttributes, &IoStatusBlock, FILE_SHARE_READ, FILE_SYNCHRONOUS_IO_NONALERT); + RtlFreeUnicodeString(&FileName); + } if (!NT_SUCCESS(Status)) {