[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