Module: wine Branch: master Commit: 562ce28d1bc1ae2f88165fa18e84a2089735992f URL: http://source.winehq.org/git/wine.git/?a=commit;h=562ce28d1bc1ae2f88165fa18e...
Author: Aric Stewart aric@codeweavers.com Date: Wed Sep 7 11:21:22 2016 +0200
ntoskrnl.exe: Implement IoGetAttachedDevice and IoGetAttachedDeviceReference.
Signed-off-by: Aric Stewart aric@codeweavers.com Signed-off-by: Sebastian Lackner sebastian@fds-team.de Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/ntoskrnl.exe/ntoskrnl.c | 31 +++++++++++++++++++++++++++---- dlls/ntoskrnl.exe/ntoskrnl.exe.spec | 2 +- 2 files changed, 28 insertions(+), 5 deletions(-)
diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c index b671e81..91e08d9 100644 --- a/dlls/ntoskrnl.exe/ntoskrnl.c +++ b/dlls/ntoskrnl.exe/ntoskrnl.c @@ -1105,13 +1105,19 @@ NTSTATUS WINAPI IoGetDeviceObjectPointer( UNICODE_STRING *name, ACCESS_MASK acc /*********************************************************************** * IoGetAttachedDevice (NTOSKRNL.EXE.@) */ -PDEVICE_OBJECT WINAPI IoGetAttachedDevice( PDEVICE_OBJECT device ) +DEVICE_OBJECT* WINAPI IoGetAttachedDevice( DEVICE_OBJECT *device ) { - FIXME( "stub: %p\n", device ); + DEVICE_OBJECT *result = device;
- return device; + TRACE( "(%p)\n", device ); + + while (result->AttachedDevice) + result = result->AttachedDevice; + + return result; }
+ /*********************************************************************** * IoGetDeviceProperty (NTOSKRNL.EXE.@) */ @@ -2121,6 +2127,12 @@ NTSTATUS WINAPI ObReferenceObjectByName( UNICODE_STRING *ObjectName, }
+static void ObReferenceObject( void *obj ) +{ + TRACE( "(%p): stub\n", obj ); +} + + /*********************************************************************** * ObDereferenceObject (NTOSKRNL.EXE.@) */ @@ -2140,7 +2152,7 @@ void WINAPI __regs_ObfReferenceObject( void *obj ) void WINAPI ObfReferenceObject( void *obj ) #endif { - FIXME( "(%p): stub\n", obj ); + ObReferenceObject( obj ); }
@@ -2159,6 +2171,17 @@ void WINAPI ObfDereferenceObject( void *obj )
/*********************************************************************** + * IoGetAttachedDeviceReference (NTOSKRNL.EXE.@) + */ +DEVICE_OBJECT* WINAPI IoGetAttachedDeviceReference( DEVICE_OBJECT *device ) +{ + DEVICE_OBJECT *result = IoGetAttachedDevice( device ); + ObReferenceObject( result ); + return result; +} + + +/*********************************************************************** * PsCreateSystemThread (NTOSKRNL.EXE.@) */ NTSTATUS WINAPI PsCreateSystemThread(PHANDLE ThreadHandle, ULONG DesiredAccess, diff --git a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec index c94b902..c1b5749 100644 --- a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec +++ b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec @@ -374,7 +374,7 @@ @ stdcall IoFreeMdl(ptr) @ stub IoFreeWorkItem @ stdcall IoGetAttachedDevice(ptr) -@ stub IoGetAttachedDeviceReference +@ stdcall IoGetAttachedDeviceReference(ptr) @ stub IoGetBaseFileSystemDeviceObject @ stub IoGetBootDiskInformation @ stdcall IoGetConfigurationInformation()