From: Stefan Leichter Subject: [PATCH] ntdll: PartlyimplementRtlDosPathNameToRelativeNtPathName_U_WithStatus Message-Id: Date: Sun, 22 Apr 2018 11:23:45 +0200 Signed-off-by: Stefan Leichter --- dlls/ntdll/ntdll.spec | 1 + dlls/ntdll/ntdll_misc.h | 6 ++++++ dlls/ntdll/path.c | 21 +++++++++++++++++++++ 3 files changed, 28 insertions(+) diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec index 8744704b71..bb965c83a0 100644 --- a/dlls/ntdll/ntdll.spec +++ b/dlls/ntdll/ntdll.spec @@ -562,6 +562,7 @@ # @ stub RtlDosApplyFileIsolationRedirection_Ustr @ stdcall RtlDosPathNameToNtPathName_U(wstr ptr ptr ptr) @ stdcall RtlDosPathNameToNtPathName_U_WithStatus(wstr ptr ptr ptr) +@ stdcall RtlDosPathNameToRelativeNtPathName_U_WithStatus(wstr ptr ptr ptr) @ stdcall RtlDosSearchPath_U(wstr wstr wstr long ptr ptr) # @ stub RtlDosSearchPath_Ustr @ stdcall RtlDowncaseUnicodeChar(long) diff --git a/dlls/ntdll/ntdll_misc.h b/dlls/ntdll/ntdll_misc.h index 85bdd9ed05..af1a33a88a 100644 --- a/dlls/ntdll/ntdll_misc.h +++ b/dlls/ntdll/ntdll_misc.h @@ -251,4 +251,10 @@ extern HANDLE keyed_event DECLSPEC_HIDDEN; NTSTATUS WINAPI RtlHashUnicodeString(PCUNICODE_STRING,BOOLEAN,ULONG,ULONG*); +typedef struct _RTL_RELATIVE_NAME { + UNICODE_STRING RelativeName; + HANDLE ContainerDirectory; + void* CurDirRef; +} RTL_RELATIVE_NAME, *PRTL_RELATIVE_NAME; + #endif diff --git a/dlls/ntdll/path.c b/dlls/ntdll/path.c index 3062787ca7..1d24321e25 100644 --- a/dlls/ntdll/path.c +++ b/dlls/ntdll/path.c @@ -436,6 +436,27 @@ BOOLEAN WINAPI RtlDosPathNameToNtPathName_U(PCWSTR dos_path, return RtlDosPathNameToNtPathName_U_WithStatus(dos_path, ntpath, file_part, cd) == STATUS_SUCCESS; } +/************************************************************************** + * RtlDosPathNameToRelativeNtPathName_U_WithStatus [NTDLL.@] + * + * See RtlDosPathNameToNtPathName_U_WithStatus (except the last parameter) + */ +NTSTATUS WINAPI RtlDosPathNameToRelativeNtPathName_U_WithStatus(const WCHAR *dos_path, + UNICODE_STRING *ntpath, WCHAR **file_part, RTL_RELATIVE_NAME *relative) +{ + TRACE("(%s,%p,%p,%p)\n", debugstr_w(dos_path), ntpath, file_part, relative); + + if (relative) + { + FIXME("Unsupported parameter\n"); + memset(relative, 0, sizeof(*relative)); + } + + /* FIXME: fill parameter relative */ + + return RtlDosPathNameToNtPathName_U_WithStatus(dos_path, ntpath, file_part, NULL); +} + /****************************************************************** * RtlDosSearchPath_U *