Merge from ndis_wip_22102004 branch:
[reactos.git] / reactos / drivers / net / ndis / include / ndissys.h
1 /*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS NDIS library
4 * FILE: ndissys.h
5 * PURPOSE: NDIS library definitions
6 * NOTES: Spin lock acquire order:
7 * - Miniport list lock
8 * - Adapter list lock
9 */
10 #ifndef __NDISSYS_H
11 #define __NDISSYS_H
12
13 #define NDIS50 1 /* Use NDIS 5.0 structures by default */
14
15 #ifdef _MSC_VER
16 #include <basetsd.h>
17 #include <ntddk.h>
18 #include <windef.h>
19 #include <ndis.h>
20 #else /* _MSC_VER */
21 #include <ddk/ntddk.h>
22 #include <ddk/ndis.h>
23 #include <ddk/xfilter.h>
24 #include <ddk/afilter.h>
25 typedef struct _ATM_ADDRESS *PATM_ADDRESS;
26 /* FIXME: Get rid of this dependance. */
27 #include <ddk/ntapi.h>
28 #endif /* _MSC_VER */
29
30 #include "miniport.h"
31 #include "protocol.h"
32
33 #include <debug.h>
34
35 /* Exported functions */
36 #ifdef _MSC_VER
37 #define EXPORT __declspec(dllexport)
38 #else
39 #define EXPORT STDCALL
40 #endif
41
42
43 #ifdef DBG
44
45 #define DEBUG_REFCHECK(Object) { \
46 if ((Object)->RefCount <= 0) { \
47 NDIS_DbgPrint(MIN_TRACE, ("Object at (0x%X) has invalid reference count (%d).\n", \
48 (Object), (Object)->RefCount)); \
49 } \
50 }
51
52 #else
53
54 #define DEBUG_REFCHECK(Object)
55
56 #endif
57
58
59 /*
60 * VOID ReferenceObject(
61 * PVOID Object)
62 */
63 #define ReferenceObject(Object) \
64 { \
65 DEBUG_REFCHECK(Object); \
66 NDIS_DbgPrint(DEBUG_REFCOUNT, ("Referencing object at (0x%X). RefCount (%d).\n", \
67 (Object), (Object)->RefCount)); \
68 \
69 InterlockedIncrement(&((Object)->RefCount)); \
70 }
71
72 /*
73 * VOID DereferenceObject(
74 * PVOID Object)
75 */
76 #define DereferenceObject(Object) \
77 { \
78 DEBUG_REFCHECK(Object); \
79 NDIS_DbgPrint(DEBUG_REFCOUNT, ("Dereferencing object at (0x%X). RefCount (%d).\n", \
80 (Object), (Object)->RefCount)); \
81 \
82 if (InterlockedDecrement(&((Object)->RefCount)) == 0) \
83 PoolFreeBuffer(Object); \
84 }
85
86
87 #define MIN(value1, value2) \
88 ((value1 < value2)? value1 : value2)
89
90 #define MAX(value1, value2) \
91 ((value1 > value2)? value1 : value2)
92
93 #endif /* __NDISSYS_H */
94
95 /* EOF */