Aric Stewart : ntoskrnl.exe: Implement IoGetAttachedDevice and IoGetAttachedDeviceReference.
Module: wine Branch: master Commit: 562ce28d1bc1ae2f88165fa18e84a2089735992f URL: http://source.winehq.org/git/wine.git/?a=commit;h=562ce28d1bc1ae2f88165fa18e... Author: Aric Stewart <aric(a)codeweavers.com> Date: Wed Sep 7 11:21:22 2016 +0200 ntoskrnl.exe: Implement IoGetAttachedDevice and IoGetAttachedDeviceReference. Signed-off-by: Aric Stewart <aric(a)codeweavers.com> Signed-off-by: Sebastian Lackner <sebastian(a)fds-team.de> Signed-off-by: Alexandre Julliard <julliard(a)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()
participants (1)
-
Alexandre Julliard