Partial implementation of RtlDosPathNameToNtPathName_U (take 2)
Mike McCormack
mike at codeweavers.com
Tue Nov 12 23:31:43 CST 2002
ChangeLog:
Partial implementation of RtlDosPathNameToNtPathName_U
-------------- next part --------------
Index: dlls/ntdll/rtl.c
===================================================================
RCS file: /home/wine/wine/dlls/ntdll/rtl.c,v
retrieving revision 1.50
diff -u -r1.50 rtl.c
--- dlls/ntdll/rtl.c 12 Sep 2002 22:07:03 -0000 1.50
+++ dlls/ntdll/rtl.c 13 Nov 2002 05:26:16 -0000
@@ -25,6 +25,7 @@
#include <stdio.h>
#include <string.h>
#include "wine/debug.h"
+#include "wine/unicode.h"
#include "windef.h"
#include "winerror.h"
#include "stackframe.h"
@@ -335,13 +336,48 @@
/**************************************************************************
* RtlDosPathNameToNtPathName_U [NTDLL.@]
*
- * FIXME: convert to UNC or whatever is expected here
+ * szwDosPath: a fully qualified DOS path name
+ * ntpath: pointer to a UNICODE_STRING to hold the converted
+ * path name
+ *
+ * FIXME: Should we not allocate the ntpath buffer under some
+ * circumstances?
+ * Are the conversions static? (always prepend '\??\' ?)
+ * Not really sure about the last two arguments.
*/
BOOLEAN WINAPI RtlDosPathNameToNtPathName_U(
- LPWSTR from,PUNICODE_STRING us,DWORD x2,DWORD x3)
+ LPWSTR szwDosPath,PUNICODE_STRING ntpath,
+ DWORD x2,DWORD x3)
{
- FIXME("(%s,%p,%08lx,%08lx)\n",debugstr_w(from),us,x2,x3);
- if (us) RtlCreateUnicodeString( us, from );
+ ULONG length;
+ UNICODE_STRING pathprefix;
+ WCHAR szPrefix[] = { '\\', '?', '?', '\\', 0 };
+
+ FIXME("(%s,%p,%08lx,%08lx) partial stub\n",
+ debugstr_w(szwDosPath),ntpath,x2,x3);
+
+ if ( !szwDosPath )
+ return FALSE;
+
+ if ( !szwDosPath[0] )
+ return FALSE;
+
+ if ( szwDosPath[1]!= ':' )
+ return FALSE;
+
+ length = strlenW(szwDosPath) * sizeof (WCHAR) + sizeof szPrefix;
+
+ ntpath->Buffer = RtlAllocateHeap(GetProcessHeap(), 0, length);
+ ntpath->Length = 0;
+ ntpath->MaximumLength = length;
+
+ if ( !ntpath->Buffer )
+ return FALSE;
+
+ RtlInitUnicodeString( &pathprefix, szPrefix );
+ RtlCopyUnicodeString( ntpath, &pathprefix );
+ RtlAppendUnicodeToString( ntpath, szwDosPath );
+
return TRUE;
}
More information about the wine-patches
mailing list