Jacek Caban : ntoskrnl.exe: Export object type values.

Alexandre Julliard julliard at winehq.org
Tue Feb 26 15:13:56 CST 2019


Module: wine
Branch: master
Commit: 38eebddc1db9db55fb0855873cadccce3ee6ba92
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=38eebddc1db9db55fb0855873cadccce3ee6ba92

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Tue Feb 26 13:38:58 2019 +0100

ntoskrnl.exe: Export object type values.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/ntoskrnl.exe/ntoskrnl.c         | 61 ++++++++++++++++++++++++++++++++++++
 dlls/ntoskrnl.exe/ntoskrnl.exe.spec  | 16 +++++-----
 dlls/ntoskrnl.exe/ntoskrnl_private.h |  4 +++
 dlls/ntoskrnl.exe/sync.c             | 17 ++++++++++
 4 files changed, 90 insertions(+), 8 deletions(-)

diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c
index 4b62660..e7f6b1d 100644
--- a/dlls/ntoskrnl.exe/ntoskrnl.c
+++ b/dlls/ntoskrnl.exe/ntoskrnl.c
@@ -251,6 +251,16 @@ static HANDLE get_device_manager(void)
     return ret;
 }
 
+
+static const WCHAR file_type_name[] = {'F','i','l','e',0};
+
+static struct _OBJECT_TYPE file_type = {
+    file_type_name,
+};
+
+POBJECT_TYPE IoFileObjectType = &file_type;
+
+
 /* transfer result of IRP back to wineserver */
 static NTSTATUS WINAPI dispatch_irp_completion( DEVICE_OBJECT *device, IRP *irp, void *context )
 {
@@ -1090,6 +1100,16 @@ static NTSTATUS WINAPI unhandled_irp( DEVICE_OBJECT *device, IRP *irp )
 }
 
 
+static const WCHAR driver_type_name[] = {'D','r','i','v','e','r',0};
+
+static struct _OBJECT_TYPE driver_type =
+{
+    driver_type_name,
+};
+
+POBJECT_TYPE IoDriverObjectType = &driver_type;
+
+
 /***********************************************************************
  *           IoCreateDriver   (NTOSKRNL.EXE.@)
  */
@@ -1159,6 +1179,16 @@ void WINAPI IoDeleteDriver( DRIVER_OBJECT *driver_object )
 }
 
 
+static const WCHAR device_type_name[] = {'D','e','v','i','c','e',0};
+
+static struct _OBJECT_TYPE device_type =
+{
+    device_type_name
+};
+
+POBJECT_TYPE IoDeviceObjectType = &device_type;
+
+
 /***********************************************************************
  *           IoCreateDevice   (NTOSKRNL.EXE.@)
  */
@@ -2169,6 +2199,17 @@ NTSTATUS WINAPI FsRtlRegisterUncProvider(PHANDLE MupHandle, PUNICODE_STRING Redi
     return STATUS_NOT_IMPLEMENTED;
 }
 
+
+static const WCHAR process_type_name[] = {'P','r','o','c','e','s','s',0};
+
+static struct _OBJECT_TYPE process_type =
+{
+    process_type_name
+};
+
+POBJECT_TYPE PsProcessType = &process_type;
+
+
 /***********************************************************************
  *           IoGetCurrentProcess / PsGetCurrentProcess   (NTOSKRNL.EXE.@)
  */
@@ -2178,6 +2219,17 @@ PEPROCESS WINAPI IoGetCurrentProcess(void)
     return NULL;
 }
 
+
+static const WCHAR thread_type_name[] = {'T','h','r','e','a','d',0};
+
+static struct _OBJECT_TYPE thread_type =
+{
+    thread_type_name,
+};
+
+POBJECT_TYPE PsThreadType = &thread_type;
+
+
 /***********************************************************************
  *           KeGetCurrentThread / PsGetCurrentThread   (NTOSKRNL.EXE.@)
  */
@@ -3983,3 +4035,12 @@ void WINAPI KeLeaveGuardedRegion(void)
 {
     FIXME("\n");
 }
+
+static const WCHAR token_type_name[] = {'T','o','k','e','n',0};
+
+static struct _OBJECT_TYPE token_type =
+{
+    token_type_name
+};
+
+POBJECT_TYPE SeTokenObjectType = &token_type;
diff --git a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
index 286d688..4dcd553 100644
--- a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
+++ b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
@@ -138,7 +138,7 @@
 @ stub ExDesktopObjectType
 @ stub ExDisableResourceBoostLite
 @ stub ExEnumHandleTable
-@ stub ExEventObjectType
+@ extern ExEventObjectType
 @ stub ExExtendZone
 @ stdcall -norelay ExfUnblockPushLock(ptr ptr)
 @ stdcall ExFreePool(ptr)
@@ -179,7 +179,7 @@
 @ stub ExRegisterCallback
 @ stub ExReinitializeResourceLite
 @ stdcall ExReleaseResourceForThreadLite(ptr long)
-@ stub ExSemaphoreObjectType
+@ extern ExSemaphoreObjectType
 @ stub ExSetResourceOwnerPointer
 @ stub ExSetTimerResolution
 @ stub ExSystemExceptionFilter
@@ -369,13 +369,13 @@
 @ stub IoDetachDevice
 @ stub IoDeviceHandlerObjectSize
 @ stub IoDeviceHandlerObjectType
-@ stub IoDeviceObjectType
+@ extern IoDeviceObjectType
 @ stub IoDisconnectInterrupt
-@ stub IoDriverObjectType
+@ extern IoDriverObjectType
 @ stub IoEnqueueIrp
 @ stub IoEnumerateDeviceObjectList
 @ stub IoFastQueryNetworkAttributes
-@ stub IoFileObjectType
+@ extern IoFileObjectType
 @ stub IoForwardAndCatchIrp
 @ stub IoForwardIrpSynchronously
 @ stub IoFreeController
@@ -914,7 +914,7 @@
 @ stdcall PsLookupProcessByProcessId(ptr ptr)
 @ stub PsLookupProcessThreadByCid
 @ stub PsLookupThreadByThreadId
-@ stub PsProcessType
+@ extern PsProcessType
 @ stub PsReferenceImpersonationToken
 @ stub PsReferencePrimaryToken
 @ stdcall PsReferenceProcessFilePointer(ptr ptr)
@@ -942,7 +942,7 @@
 @ stub PsSetThreadHardErrorsAreDisabled
 @ stub PsSetThreadWin32Thread
 @ stdcall PsTerminateSystemThread(long)
-@ stub PsThreadType
+@ extern PsThreadType
 @ stdcall READ_REGISTER_BUFFER_UCHAR(ptr ptr long)
 @ stub READ_REGISTER_BUFFER_ULONG
 @ stub READ_REGISTER_BUFFER_USHORT
@@ -1275,7 +1275,7 @@
 @ stub SeTokenIsAdmin
 @ stub SeTokenIsRestricted
 @ stub SeTokenIsWriteRestricted
-@ stub SeTokenObjectType
+@ extern SeTokenObjectType
 @ stub SeTokenType
 @ stub SeUnlockSubjectContext
 @ stub SeUnregisterLogonSessionTerminatedRoutine
diff --git a/dlls/ntoskrnl.exe/ntoskrnl_private.h b/dlls/ntoskrnl.exe/ntoskrnl_private.h
index 241e15f..859c1d1 100644
--- a/dlls/ntoskrnl.exe/ntoskrnl_private.h
+++ b/dlls/ntoskrnl.exe/ntoskrnl_private.h
@@ -21,6 +21,10 @@
 #ifndef __WINE_NTOSKRNL_PRIVATE_H
 #define __WINE_NTOSKRNL_PRIVATE_H
 
+struct _OBJECT_TYPE {
+    const WCHAR *name;      /* object type name used for type validation */
+};
+
 #ifdef __i386__
 #define DEFINE_FASTCALL1_ENTRYPOINT( name ) \
     __ASM_STDCALL_FUNC( name, 4, \
diff --git a/dlls/ntoskrnl.exe/sync.c b/dlls/ntoskrnl.exe/sync.c
index 98b3f9d..081306c 100644
--- a/dlls/ntoskrnl.exe/sync.c
+++ b/dlls/ntoskrnl.exe/sync.c
@@ -186,6 +186,14 @@ void WINAPI KeInitializeEvent( PRKEVENT event, EVENT_TYPE type, BOOLEAN state )
     event->Header.WaitListHead.Flink = NULL;
 }
 
+static const WCHAR event_type_name[] = {'E','v','e','n','t',0};
+
+static struct _OBJECT_TYPE event_type = {
+    event_type_name,
+};
+
+POBJECT_TYPE ExEventObjectType = &event_type;
+
 /***********************************************************************
  *           KeSetEvent   (NTOSKRNL.EXE.@)
  */
@@ -267,6 +275,15 @@ LONG WINAPI KeReleaseSemaphore( PRKSEMAPHORE semaphore, KPRIORITY increment,
     return ret;
 }
 
+static const WCHAR semaphore_type_name[] = {'S','e','m','a','p','h','o','r','e',0};
+
+static struct _OBJECT_TYPE semaphore_type =
+{
+    semaphore_type_name
+};
+
+POBJECT_TYPE ExSemaphoreObjectType = &semaphore_type;
+
 /***********************************************************************
  *           KeInitializeMutex   (NTOSKRNL.EXE.@)
  */




More information about the wine-cvs mailing list