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