ReactOS 0.4.15-dev-7788-g1ad9096
interlocked.h
Go to the documentation of this file.
1/******************************************************************************
2 * INTERLOCKED Functions *
3 ******************************************************************************/
4
5#define BitScanForward _BitScanForward
6#define BitScanReverse _BitScanReverse
7#define BitTest _bittest
8#define BitTestAndComplement _bittestandcomplement
9#define BitTestAndSet _bittestandset
10#define BitTestAndReset _bittestandreset
11#ifdef _WIN64
12#define BitScanForward64 _BitScanForward64
13#define BitScanReverse64 _BitScanReverse64
14#define BitTest64 _bittest64
15#define BitTestAndComplement64 _bittestandcomplement64
16#define BitTestAndSet64 _bittestandset64
17#define BitTestAndReset64 _bittestandreset64
18#endif /* _WIN64 */
19
20#if defined(_M_ARM) || defined(_M_IA64)
21#define __ACQ_(x) x##_acq
22#define __REL_(x) x##_rel
23#define __NF_(x) x##_nf
24#else
25#define __ACQ_(x) x
26#define __REL_(x) x
27#define __NF_(x) x
28#endif
29
30#define InterlockedBitTestAndSet _interlockedbittestandset
31#define InterlockedBitTestAndSetAcquire __ACQ_(_interlockedbittestandset)
32#define InterlockedBitTestAndSetRelease __REL_(_interlockedbittestandset)
33#define InterlockedBitTestAndSetNoFence __NF_(_interlockedbittestandset)
34
35#define InterlockedBitTestAndReset _interlockedbittestandreset
36#define InterlockedBitTestAndResetAcquire __ACQ_(_interlockedbittestandreset)
37#define InterlockedBitTestAndResetRelease __REL_(_interlockedbittestandreset)
38#define InterlockedBitTestAndResetNoFence __NF_(_interlockedbittestandreset)
39
40#ifdef _WIN64
41#define InterlockedBitTestAndSet64 _interlockedbittestandset64
42#define InterlockedBitTestAndSet64Acquire __ACQ_(_interlockedbittestandset64)
43#define InterlockedBitTestAndSet64Release __REL_(_interlockedbittestandset64)
44#define InterlockedBitTestAndSet64NoFence __NF_(_interlockedbittestandset64)
45
46#define InterlockedBitTestAndReset64 _interlockedbittestandreset64
47#define InterlockedBitTestAndReset64Acquire __ACQ_(_interlockedbittestandreset64)
48#define InterlockedBitTestAndReset64Release __REL_(_interlockedbittestandreset64)
49#define InterlockedBitTestAndReset64NoFence __NF_(_interlockedbittestandreset64)
50#endif /* _WIN64 */
51
52#define InterlockedAdd _InterlockedAdd
53#define InterlockedAddAcquire __ACQ_(_InterlockedAdd)
54#define InterlockedAddRelease __REL_(_InterlockedAdd)
55#define InterlockedAddNoFence __NF_(_InterlockedAdd)
56
57#define InterlockedAdd64 _InterlockedAdd64
58#define InterlockedAddAcquire64 __ACQ_(_InterlockedAdd64)
59#define InterlockedAddRelease64 __REL_(_InterlockedAdd64)
60#define InterlockedAddNoFence64 __NF_(_InterlockedAdd64)
61
62#define InterlockedAnd _InterlockedAnd
63#define InterlockedAndAcquire __ACQ_(_InterlockedAnd)
64#define InterlockedAndRelease __REL_(_InterlockedAnd)
65#define InterlockedAndNoFence __NF_(_InterlockedAnd)
66
67#define InterlockedAnd8 _InterlockedAnd8
68#ifdef _M_ARM
69#define InterlockedAndAcquire8 _InterlockedAnd8_acq
70#define InterlockedAndRelease8 _InterlockedAnd8_rel
71#define InterlockedAndNoFence8 _InterlockedAnd8_nf
72#elif defined(_M_IA64)
73#define InterlockedAnd8Acquire _InterlockedAnd8_acq
74#define InterlockedAnd8Release _InterlockedAnd8_rel
75#endif // _M_ARM
76
77#define InterlockedAnd16 _InterlockedAnd16
78#ifdef _M_ARM
79#define InterlockedAndAcquire16 _InterlockedAnd16_acq
80#define InterlockedAndRelease16 _InterlockedAnd16_rel
81#define InterlockedAndNoFence16 _InterlockedAnd16_nf
82#elif defined(_M_IA64)
83#define InterlockedAnd16Acquire _InterlockedAnd16_acq
84#define InterlockedAnd16Release _InterlockedAnd16_rel
85#endif // _M_ARM
86
87#define InterlockedAnd64 _InterlockedAnd64
88#ifdef _M_ARM
89#define InterlockedAndAcquire64 __ACQ_(_InterlockedAnd64)
90#define InterlockedAndRelease64 __REL_(_InterlockedAnd64)
91#define InterlockedAndNoFence64 __NF_(_InterlockedAnd64)
92#else // _M_ARM
93#define InterlockedAnd64Acquire __ACQ_(_InterlockedAnd64)
94#define InterlockedAnd64Release __REL_(_InterlockedAnd64)
95#define InterlockedAnd64NoFence __NF_(_InterlockedAnd64)
96#endif // _M_ARM
97
98#ifdef _WIN64
99#define InterlockedAndAffinity InterlockedAnd64
100#else
101#define InterlockedAndAffinity InterlockedAnd
102#endif // _WIN64
103
104#define InterlockedCompareExchange _InterlockedCompareExchange
105#define InterlockedCompareExchangeAcquire __ACQ_(_InterlockedCompareExchange)
106#define InterlockedCompareExchangeRelease __REL_(_InterlockedCompareExchange)
107#define InterlockedCompareExchangeNoFence __NF_(_InterlockedCompareExchange)
108
109#define InterlockedCompareExchange16 _InterlockedCompareExchange16
110#define InterlockedCompareExchangeAcquire16 __ACQ_(_InterlockedCompareExchange16)
111#define InterlockedCompareExchangeRelease16 __REL_(_InterlockedCompareExchange16)
112#define InterlockedCompareExchangeNoFence16 __NF_(_InterlockedCompareExchange16)
113
114#define InterlockedCompareExchange64 _InterlockedCompareExchange64
115#define InterlockedCompareExchangeAcquire64 __ACQ_(_InterlockedCompareExchange64)
116#define InterlockedCompareExchangeRelease64 __REL_(_InterlockedCompareExchange64)
117#define InterlockedCompareExchangeNoFence64 __NF_(_InterlockedCompareExchange64)
118
119#ifdef _WIN64
120#define InterlockedCompareExchange128 _InterlockedCompareExchange128
121#endif // _WIN64
122
123#ifdef _M_IA64
124#define InterlockedCompare64Exchange128 _InterlockedCompare64Exchange128
125#define InterlockedCompare64ExchangeAcquire128 _InterlockedCompare64Exchange128_acq
126#define InterlockedCompare64ExchangeRelease128 _InterlockedCompare64Exchange128_rel
127#endif // _M_IA64
128
129#define InterlockedCompareExchangePointer _InterlockedCompareExchangePointer
130#define InterlockedCompareExchangePointerAcquire __ACQ_(_InterlockedCompareExchangePointer)
131#define InterlockedCompareExchangePointerRelease __REL_(_InterlockedCompareExchangePointer)
132#define InterlockedCompareExchangePointerNoFence __NF_(_InterlockedCompareExchangePointer)
133
134#define InterlockedDecrement _InterlockedDecrement
135#define InterlockedDecrementAcquire __ACQ_(_InterlockedDecrement)
136#define InterlockedDecrementRelease __REL_(_InterlockedDecrement)
137#define InterlockedDecrementNoFence __NF_(_InterlockedDecrement)
138
139#define InterlockedDecrement16 _InterlockedDecrement16
140#define InterlockedDecrementAcquire16 __ACQ_(_InterlockedDecrement16)
141#define InterlockedDecrementRelease16 __REL_(_InterlockedDecrement16)
142#define InterlockedDecrementNoFence16 __NF_(_InterlockedDecrement16)
143
144#define InterlockedDecrement64 _InterlockedDecrement64
145#define InterlockedDecrementAcquire64 __ACQ_(_InterlockedDecrement64)
146#define InterlockedDecrementRelease64 __REL_(_InterlockedDecrement64)
147#define InterlockedDecrementNoFence64 __NF_(_InterlockedDecrement64)
148
149#ifdef _WIN64
150#define InterlockedDecrementSizeT(a) InterlockedDecrement64((LONG64 *)a)
151#define InterlockedDecrementSizeTNoFence(a) InterlockedDecrementNoFence64((LONG64 *)a)
152#else
153#define InterlockedDecrementSizeT(a) InterlockedDecrement((LONG *)a)
154#define InterlockedDecrementSizeTNoFence(a) InterlockedDecrementNoFence((LONG *)a)
155#endif // _WIN64
156
157#define InterlockedExchange _InterlockedExchange
158#define InterlockedExchangeAcquire __ACQ_(_InterlockedExchange)
159/* No release here */
160#define InterlockedExchangeNoFence __NF_(_InterlockedExchange)
161
162#if (_MSC_VER >= 1600)
163#define InterlockedExchange8 _InterlockedExchange8
164#endif // (_MSC_VER >= 1600)
165
166#define InterlockedExchange16 _InterlockedExchange16
167/* No release here */
168#define InterlockedExchangeAcquire16 __ACQ_(_InterlockedExchange16)
169#define InterlockedExchangeNoFence16 __NF_(_InterlockedExchange16)
170
171#define InterlockedExchange64 _InterlockedExchange64
172#define InterlockedExchangeAcquire64 __ACQ_(_InterlockedExchange64)
173/* No release here */
174#define InterlockedExchangeNoFence64 __NF_(_InterlockedExchange64)
175
176#define InterlockedExchangePointer _InterlockedExchangePointer
177#define InterlockedExchangePointerAcquire __ACQ_(_InterlockedExchangePointer)
178/* No release here */
179#define InterlockedExchangePointerNoFence __NF_(_InterlockedExchangePointer)
180
181#define InterlockedExchangeAdd _InterlockedExchangeAdd
182#define InterlockedExchangeAddAcquire __ACQ_(_InterlockedExchangeAdd)
183#define InterlockedExchangeAddRelease __REL_(_InterlockedExchangeAdd)
184#define InterlockedExchangeAddNoFence __NF_(_InterlockedExchangeAdd)
185
186#define InterlockedExchangeAdd64 _InterlockedExchangeAdd64
187#define InterlockedExchangeAddAcquire64 __ACQ_(_InterlockedExchangeAdd64)
188#define InterlockedExchangeAddRelease64 __REL_(_InterlockedExchangeAdd64)
189#define InterlockedExchangeAddNoFence64 __NF_(_InterlockedExchangeAdd64)
190
191#ifdef _WIN64
192#define InterlockedExchangeAddSizeT(a, b) InterlockedExchangeAdd64((LONG64 *)a, b)
193#define InterlockedExchangeAddSizeTAcquire(a, b) InterlockedExchangeAddAcquire64((LONG64 *)a, b)
194#define InterlockedExchangeAddSizeTNoFence(a, b) InterlockedExchangeAddNoFence64((LONG64 *)a, b)
195#else
196#define InterlockedExchangeAddSizeT(a, b) InterlockedExchangeAdd((LONG *)a, b)
197#define InterlockedExchangeAddSizeTAcquire(a, b) InterlockedExchangeAddAcquire((LONG *)a, b)
198#define InterlockedExchangeAddSizeTNoFence(a, b) InterlockedExchangeAddNoFence((LONG *)a, b)
199#endif // _WIN64
200
201#define InterlockedIncrement _InterlockedIncrement
202#define InterlockedIncrementAcquire __ACQ_(_InterlockedIncrement)
203#define InterlockedIncrementRelease __REL_(_InterlockedIncrement)
204#define InterlockedIncrementNoFence __NF_(_InterlockedIncrement)
205
206#define InterlockedIncrement16 _InterlockedIncrement16
207#define InterlockedIncrementAcquire16 __ACQ_(_InterlockedIncrement16)
208#define InterlockedIncrementRelease16 __REL_(_InterlockedIncrement16)
209#define InterlockedIncrementNoFence16 __NF_(_InterlockedIncrement16)
210
211#define InterlockedIncrement64 _InterlockedIncrement64
212#define InterlockedIncrementAcquire64 __ACQ_(_InterlockedIncrement64)
213#define InterlockedIncrementRelease64 __REL_(_InterlockedIncrement64)
214#define InterlockedIncrementNoFence64 __NF_(_InterlockedIncrement64)
215
216#ifdef _WIN64
217#define InterlockedIncrementSizeT(a) InterlockedIncrement64((LONG64 *)a)
218#define InterlockedIncrementSizeTNoFence(a) InterlockedIncrementNoFence64((LONG64 *)a)
219#else
220#define InterlockedIncrementSizeT(a) InterlockedIncrement((LONG *)a)
221#define InterlockedIncrementSizeTNoFence(a) InterlockedIncrementNoFence((LONG *)a)
222#endif // _WIN64
223
224#define InterlockedOr _InterlockedOr
225#define InterlockedOrAcquire __ACQ_(_InterlockedOr)
226#define InterlockedOrRelease __REL_(_InterlockedOr)
227#define InterlockedOrNoFence __NF_(_InterlockedOr)
228
229#define InterlockedOr8 _InterlockedOr8
230#ifdef _M_ARM
231#define InterlockedOrAcquire8 _InterlockedOr8_acq
232#define InterlockedOrRelease8 _InterlockedOr8_rel
233#define InterlockedOrNoFence8 _InterlockedOr8_nf
234#elif defined(_M_IA64)
235#define InterlockedOr8Acquire _InterlockedOr8_acq
236#define InterlockedOr8Release _InterlockedOr8_rel
237#endif // _M_ARM
238
239#define InterlockedOr16 _InterlockedOr16
240#ifdef _M_ARM
241#define InterlockedOrAcquire16 _InterlockedOr16_acq
242#define InterlockedOrRelease16 _InterlockedOr16_rel
243#define InterlockedOrNoFence16 _InterlockedOr16_nf
244#elif defined(_M_IA64)
245#define InterlockedOr16Acquire _InterlockedOr16_acq
246#define InterlockedOr16Release _InterlockedOr16_rel
247#endif // _M_ARM
248
249#define InterlockedOr64 _InterlockedOr64
250#ifdef _M_ARM
251#define InterlockedOrAcquire64 _InterlockedOr64_acq
252#define InterlockedOrRelease64 _InterlockedOr64_rel
253#define InterlockedOrNoFence64 _InterlockedOr64_nf
254#elif defined(_M_IA64) || defined(_M_AMD64)
255#define InterlockedOr64Acquire __ACQ_(_InterlockedOr64)
256#define InterlockedOr64Release __REL_(_InterlockedOr64)
257#define InterlockedOr64NoFence __NF_(_InterlockedOr64)
258#endif // _M_ARM
259
260#ifdef _WIN64
261#define InterlockedOrAffinity InterlockedOr64
262#else
263#define InterlockedOrAffinity InterlockedOr
264#endif // _WIN64
265
266#define InterlockedXor _InterlockedXor
267#define InterlockedXorAcquire __ACQ_(_InterlockedXor)
268#define InterlockedXorRelease __REL_(_InterlockedXor)
269#define InterlockedXorNoFence __NF_(_InterlockedXor)
270
271#define InterlockedXor8 _InterlockedXor8
272#ifdef _M_ARM
273#define InterlockedXorAcquire8 _InterlockedXor8_acq
274#define InterlockedXorRelease8 _InterlockedXor8_rel
275#define InterlockedXorNoFence8 _InterlockedXor8_nf
276#elif defined(_M_IA64)
277#define InterlockedXor8Acquire _InterlockedXor8_acq
278#define InterlockedXor8Release _InterlockedXor8_rel
279#endif /* _M_ARM */
280
281#define InterlockedXor16 _InterlockedXor16
282#ifdef _M_ARM
283#define InterlockedXorAcquire16 _InterlockedXor16_acq
284#define InterlockedXorRelease16 _InterlockedXor16_rel
285#define InterlockedXorNoFence16 _InterlockedXor16_nf
286#elif defined(_M_IA64)
287#define InterlockedXor16Acquire _InterlockedXor16_acq
288#define InterlockedXor16Release _InterlockedXor16_rel
289#endif /* _M_ARM */
290
291#define InterlockedXor64 _InterlockedXor64
292#ifdef _M_ARM
293#define InterlockedXorAcquire64 _InterlockedXor64_acq
294#define InterlockedXorRelease64 _InterlockedXor64_rel
295#define InterlockedXorNoFence64 _InterlockedXor64_nf
296#elif defined(_M_IA64) || defined(_M_AMD64)
297#define InterlockedXor64Acquire __ACQ_(_InterlockedXor64)
298#define InterlockedXor64Release __REL_(_InterlockedXor64)
299#define InterlockedXor64NoFence __NF_(_InterlockedXor64)
300#endif /* _M_ARM */
301
302#ifdef _M_IX86
303
304#undef _InterlockedExchange64
305#define _InterlockedExchange64 _InlineInterlockedExchange64
307LONG64
308_InlineInterlockedExchange64(
311{
312 LONG64 Old, Prev;
313 for (Old = *Target; ; Old = Prev)
314 {
316 if (Prev == Old)
317 return Prev;
318 }
319}
320
321#undef _InterlockedAdd64
322#define _InterlockedAdd64 _InlineInterlockedAdd64
324LONG64
325_InlineInterlockedAdd64(
328{
329 LONG64 Old, Prev, New;
330 for (Old = *Target; ; Old = Prev)
331 {
332 New = Old + Value;
334 if (Prev == Old)
335 return New;
336 }
337}
338
339#undef _InterlockedExchangeAdd64
340#define _InterlockedExchangeAdd64 _InlineInterlockedExchangeAdd64
342LONG64
343_InlineInterlockedExchangeAdd64(
346 )
347{
348 LONG64 Old, Prev, New;
349 for (Old = *Target; ; Old = Prev)
350 {
351 New = Old + Value;
353 if (Prev == Old)
354 return Prev;
355 }
356}
357
358#undef _InterlockedAnd64
359#define _InterlockedAnd64 _InlineInterlockedAnd64
361LONG64
362_InlineInterlockedAnd64(
365{
366 LONG64 Old, Prev, New;
367 for (Old = *Target; ; Old = Prev)
368 {
369 New = Old & Value;
371 if (Prev == Old)
372 return New;
373 }
374}
375
376#undef _InterlockedOr64
377#define _InterlockedOr64 _InlineInterlockedOr64
379LONG64
380_InlineInterlockedOr64(
383{
384 LONG64 Old, Prev, New;
385 for (Old = *Target; ; Old = Prev)
386 {
387 New = Old | Value;
389 if (Prev == Old)
390 return New;
391 }
392}
393
394#undef _InterlockedXor64
395#define _InterlockedXor64 _InlineInterlockedXor64
397LONG64
398_InlineInterlockedXor64(
401{
402 LONG64 Old, Prev, New;
403 for (Old = *Target; ; Old = Prev)
404 {
405 New = Old ^ Value;
407 if (Prev == Old)
408 return New;
409 }
410}
411
412#undef _InterlockedIncrement64
413#define _InterlockedIncrement64 _InlineInterlockedIncrement64
415LONG64
416_InlineInterlockedIncrement64(
418{
419 return _InterlockedAdd64(Target, 1);
420}
421
422#undef _InterlockedDecrement64
423#define _InterlockedDecrement64 _InlineInterlockedDecrement64
425LONG64
426_InlineInterlockedDecrement64(
428{
429 return _InterlockedAdd64(Target, -1);
430}
431
432#undef _InterlockedExchangePointer
433#define _InterlockedExchangePointer _InlineInterlockedExchangePointer
435_Ret_writes_(_Inexpressible_(Unknown))
436PVOID
439 _Post_writable_byte_size_(_Inexpressible_(Unknown)))
442{
443 return (PVOID)InterlockedExchange((volatile long *)Destination, (long)Value);
444}
445
446#undef _InterlockedCompareExchangePointer
447#define _InterlockedCompareExchangePointer _InlineInterlockedCompareExchangePointer
449_Ret_writes_(_Inexpressible_(Unknown))
450PVOID
453 _Post_writable_byte_size_(_Inexpressible_(Unknown)))
455 _In_opt_ PVOID ExChange,
456 _In_opt_ PVOID Comperand)
457{
458 return (PVOID)InterlockedCompareExchange((volatile long *)Destination,
459 (long)ExChange,
460 (long)Comperand);
461}
462
463#endif /* _M_IX86 */
464
465#ifdef _M_AMD64
466
468LONG64
469_InterlockedAdd64(
472
473{
474 return _InterlockedExchangeAdd64(Target, Value) + Value;
475}
476
477#endif /* _M_AMD64 */
478
479#ifdef _M_IA64
480
481#undef _InterlockedBitTestAndSet
482#define _InterlockedBitTestAndSet InterlockedBitTestAndSet_Inline
485_InterlockedBitTestAndSet(
487 _In_ LONG Bit)
488{
489 ULONG Mask = 1 << (Bit & 31);
490 return (BOOLEAN)((InterlockedOr(&Target[Bit / 32], Mask) & Mask) != 0);
491}
492
493#undef _InterlockedBitTestAndReset
494#define _InterlockedBitTestAndReset InterlockedBitTestAndReset_Inline
497_InterlockedBitTestAndReset(
499 _In_ LONG Bit)
500{
501 ULONG Mask = 1 << (Bit & 31);
502 return (BOOLEAN)((InterlockedAnd(&Target[Bit / 32], ~Mask) & Mask) != 0);
503}
504
505#undef _InterlockedBitTestAndSet64
506#define _InterlockedBitTestAndSet64 InterlockedBitTestAndSet64_Inline
509_InterlockedBitTestAndSet64(
511 _In_ LONG64 Bit)
512{
513 ULONG64 Mask = 1LL << (Bit & 63);
514 return (BOOLEAN)((InterlockedOr64(&Target[Bit / 64], Mask) & Mask) != 0);
515}
516
517#undef _InterlockedBitTestAndReset64
518#define _InterlockedBitTestAndReset64 InterlockedBitTestAndReset64_Inline
521_InterlockedBitTestAndReset64(
523 _In_ LONG64 Bit)
524{
525 ULONG64 Mask = 1LL << (Bit & 63);
526 return (BOOLEAN)((InterlockedAnd64(&Target[Bit / 64], ~Mask) & Mask) != 0);
527}
528
529#undef _InterlockedBitTestAndComplement
530#define _InterlockedBitTestAndComplement InterlockedBitTestAndComplement_Inline
533_InterlockedBitTestAndComplement(
535 _In_ LONG Bit)
536{
537 ULONG Mask = 1 << (Bit & 31);
538 return (BOOLEAN)((InterlockedXor(&Target[Bit / 32], Mask) & Mask) != 0);
539}
540
541#undef _InterlockedBitTestAndComplement64
542#define _InterlockedBitTestAndComplement64 InterlockedBitTestAndComplement64_Inline
545_InterlockedBitTestAndComplement64(
547 _In_ LONG64 Bit)
548{
549 ULONG64 Mask = 1LL << (Bit & 63);
550 return (BOOLEAN)((InterlockedXor64(&Target[Bit / 64], Mask) & Mask) != 0);
551}
552
553#endif /* M_IA64 */
554
unsigned char BOOLEAN
unsigned int Mask
Definition: fpcontrol.c:82
@ Unknown
Definition: i8042prt.h:114
#define InterlockedOr
Definition: interlocked.h:224
#define InterlockedAnd64
Definition: interlocked.h:87
#define InterlockedExchange
Definition: interlocked.h:157
#define InterlockedOr64
Definition: interlocked.h:249
#define InterlockedCompareExchange
Definition: interlocked.h:104
#define InterlockedXor
Definition: interlocked.h:266
#define InterlockedXor64
Definition: interlocked.h:291
#define InterlockedAnd
Definition: interlocked.h:62
void * _InterlockedCompareExchangePointer(_Interlocked_operand_ void *volatile *_Destination, void *_Exchange, void *_Comparand)
void * _InterlockedExchangePointer(_Interlocked_operand_ void *volatile *_Target, void *_Value)
__int64 _InterlockedCompareExchange64(_Interlocked_operand_ __int64 volatile *_Destination, __int64 _Exchange, __int64 _Comparand)
unsigned __int64 ULONG64
Definition: imports.h:198
#define _Ret_writes_(size)
Definition: ms_sal.h:537
#define _Inout_
Definition: ms_sal.h:378
#define _Pre_writable_byte_size_(size)
Definition: ms_sal.h:647
#define _At_(target, annos)
Definition: ms_sal.h:244
#define _In_
Definition: ms_sal.h:308
#define _In_opt_
Definition: ms_sal.h:309
#define _Post_writable_byte_size_(size)
Definition: ms_sal.h:652
#define _Interlocked_operand_
Definition: ms_sal.h:2951
_In_ PUNICODE_STRING _Inout_ PUNICODE_STRING Destination
Definition: rtlfuncs.h:3004
long LONG
Definition: pedump.c:60
#define New(t)
Definition: rtf.h:1086
int64_t LONG64
Definition: typedefs.h:68
uint32_t ULONG
Definition: typedefs.h:59
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
Definition: wdfregistry.h:413
_In_ WDFIOTARGET Target
Definition: wdfrequest.h:306
#define FORCEINLINE
Definition: wdftypes.h:67