Derek Lesho : ntoskrnl.exe: Implement ObOpenObjectByName.
Alexandre Julliard
julliard at winehq.org
Tue Aug 4 15:26:36 CDT 2020
Module: wine
Branch: master
Commit: 65df36c1151306db5a8fb86623b74c49d33a3649
URL: https://source.winehq.org/git/wine.git/?a=commit;h=65df36c1151306db5a8fb86623b74c49d33a3649
Author: Derek Lesho <dlesho at codeweavers.com>
Date: Thu Jul 16 10:17:08 2020 -0500
ntoskrnl.exe: Implement ObOpenObjectByName.
Signed-off-by: Derek Lesho <dlesho at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/ntoskrnl.exe/ntoskrnl.c | 32 ++++++++++++++++++++++++++++++++
dlls/ntoskrnl.exe/ntoskrnl.exe.spec | 2 +-
2 files changed, 33 insertions(+), 1 deletion(-)
diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c
index fa85979d0b..e94feabc82 100644
--- a/dlls/ntoskrnl.exe/ntoskrnl.c
+++ b/dlls/ntoskrnl.exe/ntoskrnl.c
@@ -2806,6 +2806,38 @@ NTSTATUS WINAPI ObReferenceObjectByName( UNICODE_STRING *ObjectName,
}
+/********************************************************************
+ * ObOpenObjectByName (NTOSKRNL.EXE.@)
+ */
+NTSTATUS WINAPI ObOpenObjectByName(POBJECT_ATTRIBUTES attr, POBJECT_TYPE type,
+ KPROCESSOR_MODE mode, ACCESS_STATE *access_state,
+ ACCESS_MASK access, PVOID ctx, HANDLE *handle)
+{
+ NTSTATUS status;
+ void *object;
+
+ TRACE( "attr(%p %s %x) %p %u %p %u %p %p\n", attr->RootDirectory, debugstr_us(attr->ObjectName),
+ attr->Attributes, type, mode, access_state, access, ctx, handle );
+
+ if (mode != KernelMode)
+ {
+ FIXME( "UserMode access not implemented\n" );
+ return STATUS_NOT_IMPLEMENTED;
+ }
+
+ if (attr->RootDirectory) FIXME( "RootDirectory unhandled\n" );
+
+ status = ObReferenceObjectByName(attr->ObjectName, attr->Attributes, access_state, access, type, mode, ctx, &object );
+ if (status != STATUS_SUCCESS)
+ return status;
+
+ status = ObOpenObjectByPointer(object, attr->Attributes, access_state, access, type, mode, handle);
+
+ ObDereferenceObject(object);
+ return status;
+}
+
+
/***********************************************************************
* ObReferenceObjectByPointer (NTOSKRNL.EXE.@)
*/
diff --git a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
index 0f65490b48..030bdbcedf 100644
--- a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
+++ b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
@@ -835,7 +835,7 @@
@ stub ObInsertObject
@ stub ObLogSecurityDescriptor
@ stub ObMakeTemporaryObject
-@ stub ObOpenObjectByName
+@ stdcall ObOpenObjectByName(ptr ptr long ptr long ptr ptr)
@ stdcall ObOpenObjectByPointer(ptr long ptr long ptr long ptr)
@ stdcall ObQueryNameString(ptr ptr long ptr)
@ stub ObQueryObjectAuditingByHandle
More information about the wine-cvs
mailing list