[PATCH] Added a bunch of ntoskrnl.exe stubs for Homeworld 2 copy protection
Jim Cameron
jim_24601 at btinternet.com
Wed Aug 27 16:05:18 CDT 2008
---
dlls/ntoskrnl.exe/ntoskrnl.c | 59 +++++++++++++++++++++++++++++++++++
dlls/ntoskrnl.exe/ntoskrnl.exe.spec | 12 +++---
include/ddk/ntddk.h | 3 ++
include/ddk/wdm.h | 10 ++++++
4 files changed, 78 insertions(+), 6 deletions(-)
diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c
index aff50fd..2e788b3 100644
--- a/dlls/ntoskrnl.exe/ntoskrnl.c
+++ b/dlls/ntoskrnl.exe/ntoskrnl.c
@@ -451,6 +451,42 @@ NTSTATUS WINAPI IoDeleteSymbolicLink( UNICODE_STRING *name )
/***********************************************************************
+ * IoGetDeviceObjectPointer (NTOSKRNL.EXE.@)
+ */
+NTSTATUS WINAPI IoGetDeviceObjectPointer( UNICODE_STRING *name, ACCESS_MASK access, PFILE_OBJECT *file, PDEVICE_OBJECT *device )
+{
+ FIXME( "stub: %s %x %p %p\n", debugstr_us(name), access, file, device );
+ return STATUS_NOT_IMPLEMENTED; /* Homeworld 2 */
+}
+
+/***********************************************************************
+ * IoGetRelatedDeviceObject (NTOSKRNL.EXE.@)
+ */
+PDEVICE_OBJECT WINAPI IoGetRelatedDeviceObject( PFILE_OBJECT obj )
+{
+ FIXME( "stub: %p\n", obj );
+ return NULL;
+}
+
+
+/***********************************************************************
+ * IoRegisterDriverReinitialization (NTOSKRNL.EXE.@)
+ */
+void WINAPI IoRegisterDriverReinitialization( PDRIVER_OBJECT obj, PDRIVER_REINITIALIZE reinit, PVOID context )
+{
+ FIXME( "stub: %p %p %p\n", obj, reinit, context );
+}
+
+/***********************************************************************
+ * IoRegisterShutdownNotification (NTOSKRNL.EXE.@)
+ */
+NTSTATUS WINAPI IoRegisterShutdownNotification( PDEVICE_OBJECT obj )
+{
+ FIXME( "stub: %p\n", obj );
+ return STATUS_SUCCESS;
+}
+
+/***********************************************************************
* IofCompleteRequest (NTOSKRNL.EXE.@)
*/
#ifdef DEFINE_FASTCALL2_ENTRYPOINT
@@ -466,6 +502,29 @@ void WINAPI IofCompleteRequest( IRP *irp, UCHAR priority_boost )
/***********************************************************************
+ * ObReferenceObjectByHandle (NTOSKRNL.EXE.@)
+ */
+NTSTATUS WINAPI ObReferenceObjectByHandle( HANDLE obj, ACCESS_MASK access,
+ POBJECT_TYPE type,
+ KPROCESSOR_MODE mode, PVOID* ptr,
+ POBJECT_HANDLE_INFORMATION info)
+{
+ FIXME( "stub: %p %x %p %d %p %p\n", obj, access, type, mode, ptr, info);
+ return STATUS_NOT_IMPLEMENTED; /* Homeworld 2 */
+}
+
+
+
+/***********************************************************************
+ * ObfDereferenceObject (NTOSKRNL.EXE.@)
+ */
+void WINAPI ObfDereferenceObject( VOID *obj )
+{
+ FIXME( "stub: %p\n", obj );
+}
+
+
+/***********************************************************************
* InterlockedCompareExchange (NTOSKRNL.EXE.@)
*/
#ifdef DEFINE_FASTCALL2_ENTRYPOINT
diff --git a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
index 0bfda7e..8f308a2 100644
--- a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
+++ b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
@@ -48,7 +48,7 @@
@ stub KefReleaseSpinLockFromDpcLevel
@ stub KiAcquireSpinLock
@ stub KiReleaseSpinLock
-@ stub ObfDereferenceObject
+@ stdcall ObfDereferenceObject(ptr)
@ stub ObfReferenceObject
@ stub RtlPrefetchMemoryNonTemporal
@ cdecl -i386 -norelay RtlUlongByteSwap() ntdll.RtlUlongByteSwap
@@ -382,7 +382,7 @@
@ stub IoGetDeviceAttachmentBaseRef
@ stub IoGetDeviceInterfaceAlias
@ stub IoGetDeviceInterfaces
-@ stub IoGetDeviceObjectPointer
+@ stdcall IoGetDeviceObjectPointer(ptr long ptr ptr)
@ stub IoGetDeviceProperty
@ stub IoGetDeviceToVerify
@ stub IoGetDiskDeviceObject
@@ -391,7 +391,7 @@
@ stub IoGetFileObjectGenericMapping
@ stub IoGetInitialStack
@ stub IoGetLowerDeviceObject
-@ stub IoGetRelatedDeviceObject
+@ stdcall IoGetRelatedDeviceObject(ptr)
@ stub IoGetRequestorProcess
@ stub IoGetRequestorProcessId
@ stub IoGetRequestorSessionId
@@ -426,12 +426,12 @@
@ stub IoReadTransferCount
@ stub IoRegisterBootDriverReinitialization
@ stub IoRegisterDeviceInterface
-@ stub IoRegisterDriverReinitialization
+@ stdcall IoRegisterDriverReinitialization(ptr ptr ptr)
@ stub IoRegisterFileSystem
@ stub IoRegisterFsRegistrationChange
@ stub IoRegisterLastChanceShutdownNotification
@ stub IoRegisterPlugPlayNotification
-@ stub IoRegisterShutdownNotification
+@ stdcall IoRegisterShutdownNotification(ptr)
@ stub IoReleaseCancelSpinLock
@ stub IoReleaseRemoveLockAndWaitEx
@ stub IoReleaseRemoveLockEx
@@ -809,7 +809,7 @@
@ stub ObOpenObjectByPointer
@ stub ObQueryNameString
@ stub ObQueryObjectAuditingByHandle
-@ stub ObReferenceObjectByHandle
+@ stdcall ObReferenceObjectByHandle(long long ptr long ptr ptr)
@ stub ObReferenceObjectByName
@ stub ObReferenceObjectByPointer
@ stub ObReferenceSecurityDescriptor
diff --git a/include/ddk/ntddk.h b/include/ddk/ntddk.h
index 47b6b1e..94f5fbd 100644
--- a/include/ddk/ntddk.h
+++ b/include/ddk/ntddk.h
@@ -46,4 +46,7 @@ typedef enum _BUS_DATA_TYPE
MaximumBusDataType
} BUS_DATA_TYPE, *PBUS_DATA_TYPE;
+void WINAPI IoRegisterDriverReinitialization(PDRIVER_OBJECT,PDRIVER_REINITIALIZE,PVOID);
+NTSTATUS WINAPI IoRegisterShutdownNotification(PDEVICE_OBJECT);
+
#endif
diff --git a/include/ddk/wdm.h b/include/ddk/wdm.h
index e2340dd..71c8b97 100644
--- a/include/ddk/wdm.h
+++ b/include/ddk/wdm.h
@@ -907,6 +907,12 @@ typedef struct _KUSER_SHARED_DATA {
} DUMMYUNIONNAME;
} KSHARED_USER_DATA, *PKSHARED_USER_DATA;
+/* This is an opaque type in Windows... */
+typedef struct _OBJECT_TYPE *POBJECT_TYPE;
+typedef struct _OBJECT_HANDLE_INFORMATION *POBJECT_HANDLE_INFORMATION;
+
+typedef VOID (*PDRIVER_REINITIALIZE) (PDRIVER_OBJECT,PVOID,ULONG);
+
NTSTATUS WINAPI ObCloseHandle(IN HANDLE handle);
#define IoGetCurrentIrpStackLocation(_Irp) ((_Irp)->Tail.Overlay.CurrentStackLocation)
@@ -941,6 +947,8 @@ void WINAPI IoDeleteDriver(DRIVER_OBJECT*);
NTSTATUS WINAPI IoDeleteSymbolicLink(UNICODE_STRING*);
void WINAPI IoFreeIrp(IRP*);
PEPROCESS WINAPI IoGetCurrentProcess(void);
+NTSTATUS WINAPI IoGetDeviceObjectPointer(UNICODE_STRING*,ACCESS_MASK,PFILE_OBJECT*,PDEVICE_OBJECT*);
+PDEVICE_OBJECT WINAPI IoGetRelatedDeviceObject(PFILE_OBJECT);
void WINAPI IoInitializeIrp(IRP*,USHORT,CCHAR);
PKTHREAD WINAPI KeGetCurrentThread(void);
@@ -951,6 +959,8 @@ ULONG WINAPI KeQueryTimeIncrement(void);
PVOID WINAPI MmAllocateNonCachedMemory(SIZE_T);
void WINAPI MmFreeNonCachedMemory(PVOID,SIZE_T);
+NTSTATUS WINAPI ObReferenceObjectByHandle(HANDLE,ACCESS_MASK,POBJECT_TYPE,KPROCESSOR_MODE,PVOID*,POBJECT_HANDLE_INFORMATION);
+
NTSTATUS WINAPI PsCreateSystemThread(PHANDLE,ULONG,POBJECT_ATTRIBUTES,HANDLE,PCLIENT_ID,PKSTART_ROUTINE,PVOID);
#define PsGetCurrentProcess() IoGetCurrentProcess()
#define PsGetCurrentThread() ((PETHREAD)KeGetCurrentThread())
--
1.5.4.3
--0-868113038-1219871689=:85704--
More information about the wine-patches
mailing list