[DDK/XDK]
[reactos.git] / reactos / include / ddk / wdm.h
index 842849f..d70b8cf 100644 (file)
@@ -170,7 +170,7 @@ typedef struct _DMA_ADAPTER *PADAPTER_OBJECT;
 #elif defined(_WDM_INCLUDED_)
 typedef struct _DMA_ADAPTER *PADAPTER_OBJECT;
 #else
-typedef struct _ADAPTER_OBJECT *PADAPTER_OBJECT; 
+typedef struct _ADAPTER_OBJECT *PADAPTER_OBJECT;
 #endif
 
 #ifndef DEFINE_GUIDEX
@@ -191,7 +191,7 @@ typedef struct _ADAPTER_OBJECT *PADAPTER_OBJECT;
 #ifdef __cplusplus
 inline int IsEqualGUIDAligned(REFGUID guid1, REFGUID guid2)
 {
-    return ( (*(PLONGLONG)(&guid1) == *(PLONGLONG)(&guid2)) && 
+    return ( (*(PLONGLONG)(&guid1) == *(PLONGLONG)(&guid2)) &&
              (*((PLONGLONG)(&guid1) + 1) == *((PLONGLONG)(&guid2) + 1)) );
 }
 #else
@@ -1204,11 +1204,12 @@ typedef enum _KSPIN_LOCK_QUEUE_NUMBER {
 #endif /* defined(_AMD64_) */
 
 typedef VOID
-(NTAPI *PKDEFERRED_ROUTINE)(
+(NTAPI KDEFERRED_ROUTINE)(
   IN struct _KDPC *Dpc,
   IN PVOID DeferredContext OPTIONAL,
   IN PVOID SystemArgument1 OPTIONAL,
   IN PVOID SystemArgument2 OPTIONAL);
+typedef KDEFERRED_ROUTINE *PKDEFERRED_ROUTINE;
 
 typedef enum _KDPC_IMPORTANCE {
   LowImportance,
@@ -1389,8 +1390,9 @@ typedef enum _LOCK_OPERATION {
 #define KTIMER_ACTUAL_LENGTH (FIELD_OFFSET(KTIMER, Period) + sizeof(LONG))
 
 typedef BOOLEAN
-(NTAPI *PKSYNCHRONIZE_ROUTINE)(
+(NTAPI KSYNCHRONIZE_ROUTINE)(
   IN PVOID SynchronizeContext);
+typedef KSYNCHRONIZE_ROUTINE *PKSYNCHRONIZE_ROUTINE;
 
 typedef enum _POOL_TYPE {
   NonPagedPool,
@@ -5456,6 +5458,7 @@ typedef struct _IO_COMPLETION_CONTEXT {
 #define IRP_DEFER_IO_COMPLETION         0x00000800
 #define IRP_OB_QUERY_NAME               0x00001000
 #define IRP_HOLD_DEVICE_QUEUE           0x00002000
+/* The following 2 are missing in latest WDK */
 #define IRP_RETRY_IO_COMPLETION         0x00004000
 #define IRP_CLASS_CACHE_OPERATION       0x00008000
 
@@ -7718,6 +7721,8 @@ KeMemoryBarrier(VOID)
 #endif
 }
 
+#define KeMemoryBarrierWithoutFence() _ReadWriteBarrier()
+
 NTHALAPI
 KIRQL
 NTAPI
@@ -7875,6 +7880,21 @@ typedef XSAVE_FORMAT XMM_SAVE_AREA32, *PXMM_SAVE_AREA32;
 #define KeGetDcacheFillSize() 1L
 
 #define YieldProcessor _mm_pause
+#define FastFence __faststorefence
+#define LoadFence _mm_lfence
+#define MemoryFence _mm_mfence
+#define StoreFence _mm_sfence
+#define LFENCE_ACQUIRE() LoadFence()
+
+FORCEINLINE
+VOID
+KeMemoryBarrier(VOID)
+{
+  FastFence();
+  LFENCE_ACQUIRE();
+}
+
+#define KeMemoryBarrierWithoutFence() _ReadWriteBarrier()
 
 FORCEINLINE
 KIRQL
@@ -7925,6 +7945,22 @@ KeGetCurrentThread(VOID)
   return (struct _KTHREAD *)__readgsqword(0x188);
 }
 
+FORCEINLINE
+NTSTATUS
+KeSaveFloatingPointState(PVOID FloatingState)
+{
+  UNREFERENCED_PARAMETER(FloatingState);
+  return STATUS_SUCCESS;
+}
+
+FORCEINLINE
+NTSTATUS
+KeRestoreFloatingPointState(PVOID FloatingState)
+{
+  UNREFERENCED_PARAMETER(FloatingState);
+  return STATUS_SUCCESS;
+}
+
 /* VOID
  * KeFlushIoBuffers(
  *   IN PMDL Mdl,
@@ -13290,14 +13326,14 @@ ExInterlockedFlushSList(
 #if defined(_WIN2K_COMPAT_SLIST_USAGE) && defined(_X86_)
 
 NTKERNELAPI
-PSINGLE_LIST_ENTRY 
+PSINGLE_LIST_ENTRY
 FASTCALL
 ExInterlockedPopEntrySList(
   IN PSLIST_HEADER ListHead,
   IN PKSPIN_LOCK Lock);
 
 NTKERNELAPI
-PSINGLE_LIST_ENTRY 
+PSINGLE_LIST_ENTRY
 FASTCALL
 ExInterlockedPushEntrySList(
   IN PSLIST_HEADER ListHead,