rendered paste bodydiff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c
index 660ba1b..531f6e7 100644
--- a/dlls/ntdll/file.c
+++ b/dlls/ntdll/file.c
@@ -196,11 +199,11 @@ NTSTATUS WINAPI NtCreateFile( PHANDLE ha
if (attr->RootDirectory)
{
FIXME( "RootDirectory %p not supported\n", attr->RootDirectory );
- return STATUS_OBJECT_NAME_NOT_FOUND;
+ io->u.Status = STATUS_OBJECT_NAME_NOT_FOUND;
}
-
- io->u.Status = wine_nt_to_unix_file_name( attr->ObjectName, &unix_name, disposition,
- !(attr->Attributes & OBJ_CASE_INSENSITIVE) );
+ else
+ io->u.Status = wine_nt_to_unix_file_name( attr->ObjectName, &unix_name, disposition,
+ !(attr->Attributes & OBJ_CASE_INSENSITIVE) );
if (io->u.Status == STATUS_NO_SUCH_FILE &&
disposition != FILE_OPEN && disposition != FILE_OVERWRITE)
@@ -226,7 +229,20 @@ NTSTATUS WINAPI NtCreateFile( PHANDLE ha
SERVER_END_REQ;
RtlFreeAnsiString( &unix_name );
}
- else WARN("%s not found (%lx)\n", debugstr_us(attr->ObjectName), io->u.Status );
+ else
+ {
+ /* Check for Nt device */
+ SERVER_START_REQ( open_device )
+ {
+ req->access = access;
+ req->attributes = attr ? attr->Attributes : 0;
+ req->rootdir = attr ? attr->RootDirectory : 0;
+ wine_server_add_data(req, attr->ObjectName->Buffer, attr->ObjectName->Length);
+ io->u.Status = wine_server_call(req);
+ *handle = reply->handle;
+ }
+ SERVER_END_REQ;
+ }
if (io->u.Status == STATUS_SUCCESS)
{
@@ -249,6 +265,7 @@ NTSTATUS WINAPI NtCreateFile( PHANDLE ha
break;
}
}
+ else WARN("%s not found (%lx)\n", debugstr_us(attr->ObjectName), io->u.Status );
return io->u.Status;
}