2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS NDIS library
5 * PURPOSE: NDIS library definitions
6 * NOTES: Spin lock acquire order:
13 typedef unsigned long NDIS_STATS
;
19 /* FIXME: These were removed and are no longer used! */
20 #define NdisWorkItemHalt NdisMaxWorkItems
21 #define NdisWorkItemSendLoopback (NdisMaxWorkItems + 1)
23 /* FIXME: We miss the ATM headers. */
24 typedef struct _ATM_ADDRESS
*PATM_ADDRESS
;
27 /* FIXME: This should go away once NDK will be compatible with MS DDK headers. */
29 NTSTATUS NTAPI
ZwDuplicateObject(IN HANDLE
, IN HANDLE
, IN HANDLE
, OUT PHANDLE
, IN ACCESS_MASK
, IN ULONG
, IN ULONG
);
31 #include <ndk/ntndk.h>
34 #define NDIS_MINIPORT_WORK_QUEUE_SIZE 10
36 struct _ADAPTER_BINDING
;
38 typedef struct _INTERNAL_NDIS_MINIPORT_WORK_ITEM
{
39 SINGLE_LIST_ENTRY Link
;
40 struct _ADAPTER_BINDING
*AdapterBinding
;
41 NDIS_MINIPORT_WORK_ITEM RealWorkItem
;
42 } INTERNAL_NDIS_MINIPORT_WORK_ITEM
, *PINTERNAL_NDIS_MINIPORT_WORK_ITEM
;
44 typedef struct _NDISI_PACKET_POOL
{
45 NDIS_SPIN_LOCK SpinLock
;
46 struct _NDIS_PACKET
*FreeList
;
49 } NDISI_PACKET_POOL
, * PNDISI_PACKET_POOL
;
56 /* Exported functions */
61 #define TAG(A, B, C, D) (ULONG)(((A)<<0) + ((B)<<8) + ((C)<<16) + ((D)<<24))
62 #define NDIS_TAG 0x4e4d4953
66 #define DEBUG_REFCHECK(Object) { \
67 if ((Object)->RefCount <= 0) { \
68 NDIS_DbgPrint(MIN_TRACE, ("Object at (0x%X) has invalid reference count (%d).\n", \
69 (Object), (Object)->RefCount)); \
75 #define DEBUG_REFCHECK(Object)
81 * VOID ReferenceObject(
84 #define ReferenceObject(Object) \
86 DEBUG_REFCHECK(Object); \
87 NDIS_DbgPrint(DEBUG_REFCOUNT, ("Referencing object at (0x%X). RefCount (%d).\n", \
88 (Object), (Object)->RefCount)); \
90 InterlockedIncrement((PLONG)&((Object)->RefCount)); \
94 * VOID DereferenceObject(
97 #define DereferenceObject(Object) \
99 DEBUG_REFCHECK(Object); \
100 NDIS_DbgPrint(DEBUG_REFCOUNT, ("Dereferencing object at (0x%X). RefCount (%d).\n", \
101 (Object), (Object)->RefCount)); \
103 if (InterlockedDecrement((PLONG)&((Object)->RefCount)) == 0) \
104 PoolFreeBuffer(Object); \
108 #define MIN(value1, value2) \
109 ((value1 < value2)? value1 : value2)
111 #define MAX(value1, value2) \
112 ((value1 > value2)? value1 : value2)
114 #endif /* __NDISSYS_H */