Aric Stewart : ntoskrnl.exe: Implement IoGetAttachedDevice and IoGetAttachedDeviceReference.
Alexandre Julliard
julliard at winehq.org
Wed Sep 7 10:48:41 CDT 2016
Module: wine
Branch: master
Commit: 562ce28d1bc1ae2f88165fa18e84a2089735992f
URL: http://source.winehq.org/git/wine.git/?a=commit;h=562ce28d1bc1ae2f88165fa18e84a2089735992f
Author: Aric Stewart <aric at codeweavers.com>
Date: Wed Sep 7 11:21:22 2016 +0200
ntoskrnl.exe: Implement IoGetAttachedDevice and IoGetAttachedDeviceReference.
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 | 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()
More information about the wine-cvs
mailing list