Use free Windows DDK and compile with latest MinGW releases.
[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 #include <ddk/ntddk.h>
16 #include <ddk/ndis.h>
17
18 #include <debug.h>
19
20 #ifdef DBG
21
22 #define DEBUG_REFCHECK(Object) { \
23 if ((Object)->RefCount <= 0) { \
24 NDIS_DbgPrint(MIN_TRACE, ("Object at (0x%X) has invalid reference count (%d).\n", \
25 (Object), (Object)->RefCount)); \
26 } \
27 }
28
29 #else
30
31 #define DEBUG_REFCHECK(Object)
32
33 #endif
34
35
36 /*
37 * VOID ReferenceObject(
38 * PVOID Object)
39 */
40 #define ReferenceObject(Object) \
41 { \
42 DEBUG_REFCHECK(Object); \
43 NDIS_DbgPrint(DEBUG_REFCOUNT, ("Referencing object at (0x%X). RefCount (%d).\n", \
44 (Object), (Object)->RefCount)); \
45 \
46 InterlockedIncrement(&((Object)->RefCount)); \
47 }
48
49 /*
50 * VOID DereferenceObject(
51 * PVOID Object)
52 */
53 #define DereferenceObject(Object) \
54 { \
55 DEBUG_REFCHECK(Object); \
56 NDIS_DbgPrint(DEBUG_REFCOUNT, ("Dereferencing object at (0x%X). RefCount (%d).\n", \
57 (Object), (Object)->RefCount)); \
58 \
59 if (InterlockedDecrement(&((Object)->RefCount)) == 0) \
60 PoolFreeBuffer(Object); \
61 }
62
63
64 #define MIN(value1, value2) \
65 ((value1 < value2)? value1 : value2)
66
67 #define MAX(value1, value2) \
68 ((value1 > value2)? value1 : value2)
69
70 #endif /* __NDISSYS_H */
71
72 /* EOF */