Get rid of NdisWorkItemHalt.
[reactos.git] / reactos / drivers / net / ndis / include / ndissys.h
index dbc3986..9b21db1 100644 (file)
 #ifndef __NDISSYS_H
 #define __NDISSYS_H
 
-#define NDIS50 1    /* Use NDIS 5.0 structures by default */
-
-#ifdef _MSC_VER
-#include <basetsd.h>
-#include <ntddk.h>
-#include <windef.h>
+typedef unsigned long NDIS_STATS;
 #include <ndis.h>
+#include <xfilter.h>
+#include <afilter.h>
+
+#if _MSC_VER
+/* FIXME: These were removed and are no longer used! */
+#define NdisWorkItemSendLoopback NdisWorkItemReserved
 #else /* _MSC_VER */
-#include <ddk/ntddk.h>
-#include <ddk/xfilter.h>
-#include <net/ndis.h>
+/* FIXME: We miss the ATM headers. */
+typedef struct _ATM_ADDRESS *PATM_ADDRESS;
 #endif /* _MSC_VER */
 
+/* FIXME: This should go away once NDK will be compatible with MS DDK headers. */
+#if _MSC_VER
+NTSTATUS NTAPI ZwDuplicateObject(IN HANDLE, IN HANDLE, IN HANDLE, OUT PHANDLE, IN ACCESS_MASK, IN ULONG, IN ULONG);
+#else
+#include <ndk/ntndk.h>
+#endif
+
+#define NDIS_MINIPORT_WORK_QUEUE_SIZE 10
+
+struct _ADAPTER_BINDING;
+
+typedef struct _INTERNAL_NDIS_MINIPORT_WORK_ITEM {
+    SINGLE_LIST_ENTRY Link;
+    struct _ADAPTER_BINDING *AdapterBinding;
+    NDIS_MINIPORT_WORK_ITEM RealWorkItem;
+} INTERNAL_NDIS_MINIPORT_WORK_ITEM, *PINTERNAL_NDIS_MINIPORT_WORK_ITEM;
+
+typedef struct _NDISI_PACKET_POOL {
+  NDIS_SPIN_LOCK  SpinLock;
+  struct _NDIS_PACKET *FreeList;
+  UINT  PacketLength;
+  UCHAR  Buffer[1];
+} NDISI_PACKET_POOL, * PNDISI_PACKET_POOL;
+
 #include "miniport.h"
 #include "protocol.h"
 
 #include <debug.h>
 
 /* Exported functions */
-#ifdef _MSC_VER
-#define EXPORT __declspec(dllexport)
-#else
-#define EXPORT STDCALL
+#ifndef EXPORT
+#define EXPORT NTAPI
 #endif
 
+#define TAG(A, B, C, D) (ULONG)(((A)<<0) + ((B)<<8) + ((C)<<16) + ((D)<<24))
+#define NDIS_TAG  0x4e4d4953
 
 #ifdef DBG
 
  * VOID ReferenceObject(
  *     PVOID Object)
  */
-#define ReferenceObject(Object)                  \
-{                                                \
-    DEBUG_REFCHECK(Object);                      \
+#define ReferenceObject(Object)                         \
+{                                                       \
+    DEBUG_REFCHECK(Object);                             \
     NDIS_DbgPrint(DEBUG_REFCOUNT, ("Referencing object at (0x%X). RefCount (%d).\n", \
-        (Object), (Object)->RefCount));          \
-                                                 \
-    InterlockedIncrement(&((Object)->RefCount)); \
+        (Object), (Object)->RefCount));                 \
+                                                        \
+    InterlockedIncrement((PLONG)&((Object)->RefCount)); \
 }
 
 /*
  * VOID DereferenceObject(
  *     PVOID Object)
  */
-#define DereferenceObject(Object)                         \
-{                                                         \
-    DEBUG_REFCHECK(Object);                               \
+#define DereferenceObject(Object)                                \
+{                                                                \
+    DEBUG_REFCHECK(Object);                                      \
     NDIS_DbgPrint(DEBUG_REFCOUNT, ("Dereferencing object at (0x%X). RefCount (%d).\n", \
-        (Object), (Object)->RefCount));                   \
-                                                          \
-    if (InterlockedDecrement(&((Object)->RefCount)) == 0) \
-        PoolFreeBuffer(Object);                           \
+        (Object), (Object)->RefCount));                          \
+                                                                 \
+    if (InterlockedDecrement((PLONG)&((Object)->RefCount)) == 0) \
+        PoolFreeBuffer(Object);                                  \
 }