Aric Stewart : ntoskrnl.exe: Implement ObReferenceObjectByName but only for loaded drivers.
Alexandre Julliard
julliard at winehq.org
Thu Aug 4 17:20:18 CDT 2016
Module: wine
Branch: master
Commit: 6a686d63ad92c80cdca08e1a67856a431031b600
URL: http://source.winehq.org/git/wine.git/?a=commit;h=6a686d63ad92c80cdca08e1a67856a431031b600
Author: Aric Stewart <aric at codeweavers.com>
Date: Thu Aug 4 11:53:57 2016 -0500
ntoskrnl.exe: Implement ObReferenceObjectByName but only for loaded drivers.
Signed-off-by: Aric Stewart <aric at codeweavers.com>
Signed-off-by: Sebastian Lackner <sebastian at fds-team.de>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/ntoskrnl.exe/ntoskrnl.c | 32 ++++++++++++++++++++++++++++++--
1 file changed, 30 insertions(+), 2 deletions(-)
diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c
index 25187d3..d812692 100644
--- a/dlls/ntoskrnl.exe/ntoskrnl.c
+++ b/dlls/ntoskrnl.exe/ntoskrnl.c
@@ -2107,8 +2107,36 @@ NTSTATUS WINAPI ObReferenceObjectByName( UNICODE_STRING *ObjectName,
void *ParseContext,
void **Object)
{
- FIXME("stub\n");
- return STATUS_NOT_IMPLEMENTED;
+ struct wine_driver *driver;
+ struct wine_rb_entry *entry;
+
+ TRACE("mostly-stub:%s %i %p %i %p %i %p %p\n", debugstr_us(ObjectName),
+ Attributes, AccessState, DesiredAccess, ObjectType, AccessMode,
+ ParseContext, Object);
+
+ if (AccessState) FIXME("Unhandled AccessState\n");
+ if (DesiredAccess) FIXME("Unhandled DesiredAccess\n");
+ if (ParseContext) FIXME("Unhandled ParseContext\n");
+ if (ObjectType) FIXME("Unhandled ObjectType\n");
+
+ if (AccessMode != KernelMode)
+ {
+ FIXME("UserMode access not implemented\n");
+ return STATUS_NOT_IMPLEMENTED;
+ }
+
+ EnterCriticalSection(&drivers_cs);
+ entry = wine_rb_get(&wine_drivers, ObjectName);
+ LeaveCriticalSection(&drivers_cs);
+ if (!entry)
+ {
+ FIXME("Object (%s) not found, may not be tracked.\n", debugstr_us(ObjectName));
+ return STATUS_NOT_IMPLEMENTED;
+ }
+
+ driver = WINE_RB_ENTRY_VALUE(entry, struct wine_driver, entry);
+ *Object = &driver->driver_obj;
+ return STATUS_SUCCESS;
}
More information about the wine-cvs
mailing list