ReactOS 0.4.16-dev-1946-g52006dd
memaccess.h
Go to the documentation of this file.
2#pragma once
3
4#include <intrin.h>
5$endif()
6
7#define KeMemoryBarrierWithoutFence() _ReadWriteBarrier()
8
9#if defined(_M_IX86) || defined(_M_AMD64)
10#define PreFetchCacheLine(l, a) _mm_prefetch((char const *) a, l)
11#define PF_TEMPORAL_LEVEL_1 _MM_HINT_T0
12#define PF_TEMPORAL_LEVEL_2 _MM_HINT_T1
13#define PF_TEMPORAL_LEVEL_3 _MM_HINT_T2
14#define PF_NON_TEMPORAL_LEVEL_ALL _MM_HINT_NTA
15#define _AcquireBarrier()
16#define _ReleaseBarrier()
17#elif defined(_M_ARM) || defined(_M_ARM64)
18#define PreFetchCacheLine(l,a) __prefetch((const void *) (a))
19#define PrefetchForWrite(p) __prefetch((const void *) (p))
20#define PF_TEMPORAL_LEVEL_1 0
21#define PF_TEMPORAL_LEVEL_2 1
22#define PF_TEMPORAL_LEVEL_3 2
23#define PF_NON_TEMPORAL_LEVEL_ALL 3
24#define ReadForWriteAccess(p) (*(p))
25#endif
26
27#if !defined(RC_INVOKED)
28
29#if defined(_M_IX86)
30__forceinline
31void
33 void)
34{
35 long Barrier;
36 _InterlockedOr(&Barrier, 0);
37}
38#define PrefetchForWrite(p)
39#define ReadForWriteAccess(p) (*(p))
40#elif defined(_M_AMD64)
41#define MemoryBarrier __faststorefence
42#define PrefetchForWrite(p) _m_prefetchw(p)
43#define ReadForWriteAccess(p) (_m_prefetchw(p), *(p))
44#elif defined(_M_ARM)
45# define MemoryBarrier() __dmb(_ARM_BARRIER_SY)
46# define _AcquireBarrier() __dmb(_ARM_BARRIER_ISH)
47# define _ReleaseBarrier() __dmb(_ARM_BARRIER_ISH)
48# define _DataSynchronizationBarrier() __dsb(_ARM_BARRIER_SY)
49# define _InstructionSynchronizationBarrier() __isb(_ARM_BARRIER_SY)
50#elif defined(_M_ARM64)
51# define MemoryBarrier() __dmb(_ARM64_BARRIER_SY)
52# define _AcquireBarrier() __dmb(_ARM64_BARRIER_ISH)
53# define _ReleaseBarrier() __dmb(_ARM64_BARRIER_ISH)
54# define _DataSynchronizationBarrier() __dsb(_ARM64_BARRIER_SY)
55# define _InstructionSynchronizationBarrier() __isb(_ARM64_BARRIER_SY)
56#else
57#error Unsupported architecture
58#endif /* _M_ARM */
59
60#if defined(_M_IX86) || defined(_M_AMD64)
61#define __iso_volatile_load8(p) (*(volatile char*)(p))
62#define __iso_volatile_load16(p) (*(volatile short*)(p))
63#define __iso_volatile_load32(p) (*(volatile int*)(p))
64#define __iso_volatile_load64(p) (*(volatile __int64*)(p))
65#define __iso_volatile_store8(p,v) (*(volatile char*)(p) = (v))
66#define __iso_volatile_store16(p,v) (*(volatile short*)(p) = (v))
67#define __iso_volatile_store32(p,v) (*(volatile int*)(p) = (v))
68#define __iso_volatile_store64(p,v) (*(volatile __int64*)(p) = (v))
69#endif
70
71__forceinline
72char
73ReadRaw8 (
74 _In_ _Interlocked_operand_ char const volatile *Source)
75{
76 return *(char *)Source;
77}
78
79__forceinline
80void
83 _In_ char Value)
84{
85 *(char *)Destination = Value;
86}
87
88__forceinline
89short
91 _In_ _Interlocked_operand_ short const volatile *Source)
92{
93 return *(short *)Source;
94}
95
96__forceinline
97void
100 _In_ short Value)
101{
102 *(short *)Destination = Value;
103}
104
105__forceinline
106long
108 _In_ _Interlocked_operand_ long const volatile *Source)
109{
110 return *(long *)Source;
111}
112
113__forceinline
114void
117 _In_ long Value)
118{
119 *(long *)Destination = Value;
120}
121
122__forceinline
126{
127 return *(__int64 *)Source;
128}
129
130__forceinline
131void
135{
137}
138
139__forceinline
140char
142 _In_ _Interlocked_operand_ char const volatile *Source)
143{
145}
146
147__forceinline
148void
151 _In_ char Value)
152{
154}
155
156__forceinline
157short
159 _In_ _Interlocked_operand_ short const volatile *Source)
160{
162}
163
164__forceinline
165void
168 _In_ short Value)
169{
171}
172
173__forceinline
174long
176 _In_ _Interlocked_operand_ long const volatile *Source)
177{
178 return __iso_volatile_load32((const volatile int*)Source);
179}
180
181__forceinline
182void
185 _In_ long Value)
186{
188}
189
190__forceinline
194{
196}
197
198__forceinline
199void
203{
205}
206
207
208__forceinline
209char
211 _In_ _Interlocked_operand_ char const volatile *Source)
212{
214 _AcquireBarrier();
215 return Value;
216}
217
218__forceinline
219void
222 _In_ char Value)
223{
224 _ReleaseBarrier();
226}
227
228__forceinline
229short
231 _In_ _Interlocked_operand_ short const volatile *Source)
232{
234 _AcquireBarrier();
235 return Value;
236}
237
238__forceinline
239void
242 _In_ short Value)
243{
244 _ReleaseBarrier();
246}
247
248__forceinline
249long
251 _In_ _Interlocked_operand_ long const volatile *Source)
252{
253 long Value = __iso_volatile_load32((const volatile int*)Source);
254 _AcquireBarrier();
255 return Value;
256}
257
258__forceinline
259void
262 _In_ long Value)
263{
264 _ReleaseBarrier();
266}
267
268__forceinline
272{
274 _AcquireBarrier();
275 return Value;
276}
277
278__forceinline
279void
283{
284 _ReleaseBarrier();
286}
287
288
289__forceinline
290unsigned char
292 _In_ _Interlocked_operand_ unsigned char const volatile *Source)
293{
294 return (unsigned char)ReadAcquire8((char*)Source);
295}
296
297__forceinline
298unsigned char
300 _In_ _Interlocked_operand_ unsigned char const volatile *Source)
301{
302 return (unsigned char)ReadNoFence8((char*)Source);
303}
304
305__forceinline
306unsigned char
308 _In_ _Interlocked_operand_ unsigned char const volatile *Source)
309{
310 return (unsigned char)ReadRaw8((char*)Source);
311}
312
313__forceinline
314void
316 _Out_ _Interlocked_operand_ unsigned char volatile *Destination,
317 _In_ unsigned char Value)
318{
319 WriteRelease8((char*)Destination, (char)Value);
320}
321
322__forceinline
323void
325 _Out_ _Interlocked_operand_ unsigned char volatile *Destination,
326 _In_ unsigned char Value)
327{
328 WriteNoFence8((char*)Destination, (char)Value);
329}
330
331__forceinline
332void
334 _Out_ _Interlocked_operand_ unsigned char volatile *Destination,
335 _In_ unsigned char Value)
336{
337 WriteRaw8((char*)Destination, (char)Value);
338}
339
340__forceinline
344{
345 return (BOOLEAN)ReadAcquire8((char*)Source);
346}
347
348__forceinline
349unsigned char
352{
353 return (BOOLEAN)ReadNoFence8((char*)Source);
354}
355
356__forceinline
357void
361{
362 WriteRelease8((char*)Destination, (char)Value);
363}
364
365__forceinline
366void
370{
371 WriteNoFence8((char*)Destination, (char)Value);
372}
373
374__forceinline
375unsigned short
377 _In_ _Interlocked_operand_ unsigned short const volatile *Source)
378{
379 return (unsigned short)ReadAcquire16((short*)Source);
380}
381
382__forceinline
383unsigned short
385 _In_ _Interlocked_operand_ unsigned short const volatile *Source)
386{
387 return (unsigned short)ReadNoFence16((short*)Source);
388}
389
390__forceinline
391unsigned short
393 _In_ _Interlocked_operand_ unsigned short const volatile *Source)
394{
395 return (unsigned short)ReadRaw16((short*)Source);
396}
397
398__forceinline
399void
401 _Out_ _Interlocked_operand_ unsigned short volatile *Destination,
402 _In_ unsigned short Value)
403{
404 WriteRelease16((short*)Destination, (short)Value);
405}
406
407__forceinline
408void
410 _Out_ _Interlocked_operand_ unsigned short volatile *Destination,
411 _In_ unsigned short Value)
412{
413 WriteNoFence16((short*)Destination, (short)Value);
414}
415
416__forceinline
417void
419 _Out_ _Interlocked_operand_ unsigned short volatile *Destination,
420 _In_ unsigned short Value)
421{
422 WriteRaw16((short*)Destination, (short)Value);
423}
424
425__forceinline
426unsigned long
428 _In_ _Interlocked_operand_ unsigned long const volatile *Source)
429{
430 return (unsigned long)ReadAcquire((long*)Source);
431}
432
433__forceinline
434unsigned long
436 _In_ _Interlocked_operand_ unsigned long const volatile *Source)
437{
438 return (unsigned long)ReadNoFence((long*)Source);
439}
440
441__forceinline
442unsigned long
444 _In_ _Interlocked_operand_ unsigned long const volatile *Source)
445{
446 return (unsigned long)ReadRaw((long*)Source);
447}
448
449__forceinline
450void
452 _Out_ _Interlocked_operand_ unsigned long volatile *Destination,
453 _In_ unsigned long Value)
454{
455 WriteRelease((long*)Destination, (long)Value);
456}
457
458__forceinline
459void
461 _Out_ _Interlocked_operand_ unsigned long volatile *Destination,
462 _In_ unsigned long Value)
463{
464 WriteNoFence((long*)Destination, (long)Value);
465}
466
467__forceinline
468void
470 _Out_ _Interlocked_operand_ unsigned long volatile *Destination,
471 _In_ unsigned long Value)
472{
473 WriteRaw((long*)Destination, (long)Value);
474}
475
476__forceinline
477unsigned __int64
479 _In_ _Interlocked_operand_ unsigned __int64 const volatile *Source)
480{
481 return (unsigned __int64)ReadAcquire64((__int64*)Source);
482}
483
484__forceinline
485unsigned __int64
487 _In_ _Interlocked_operand_ unsigned __int64 const volatile *Source)
488{
489 return (unsigned __int64)ReadNoFence64((__int64*)Source);
490}
491
492__forceinline
493unsigned __int64
495 _In_ _Interlocked_operand_ unsigned __int64 const volatile *Source)
496{
497 return (unsigned __int64)ReadRaw64((__int64*)Source);
498}
499
500__forceinline
501void
504 _In_ unsigned __int64 Value)
505{
507}
508
509__forceinline
510void
513 _In_ unsigned __int64 Value)
514{
516}
517
518__forceinline
519void
522 _In_ unsigned __int64 Value)
523{
525}
526
527#ifdef _WIN64
528
529__forceinline
530void*
532 _In_ _Interlocked_operand_ void* const volatile *Source)
533{
534 return (void*)ReadAcquire64((__int64*)Source);
535}
536
537__forceinline
538void*
540 _In_ _Interlocked_operand_ void* const volatile *Source)
541{
542 return (void*)ReadNoFence64((__int64*)Source);
543}
544
545__forceinline
546void*
548 _In_ _Interlocked_operand_ void* const volatile *Source)
549{
550 return (void*)ReadRaw64((__int64*)Source);
551}
552
553__forceinline
554void
557 _In_ void* Value)
558{
560}
561
562__forceinline
563void
566 _In_ void* Value)
567{
569}
570
571__forceinline
572void
575 _In_ void* Value)
576{
578}
579
580#define ReadLongPtrAcquire ReadAcquire64
581#define ReadLongPtrNoFence ReadNoFence64
582#define ReadLongPtrRaw ReadRaw64
583#define WriteLongPtrRelease WriteRelease64
584#define WriteLongPtrNoFence WriteNoFence64
585#define WriteLongPtrRaw WriteRaw64
586#define ReadULongPtrAcquire ReadULong64Acquire
587#define ReadULongPtrNoFence ReadULong64NoFence
588#define ReadULongPtrRaw ReadULong64Raw
589#define WriteULongPtrRelease WriteULong64Release
590#define WriteULongPtrNoFence WriteULong64NoFence
591#define WriteULongPtrRaw WriteULong64Raw
592
593#else // _WIN64
594
595__forceinline
596void*
598 _In_ _Interlocked_operand_ void* const volatile *Source)
599{
600 return (void*)ReadAcquire((long*)Source);
601}
602
603__forceinline
604void*
606 _In_ _Interlocked_operand_ void* const volatile *Source)
607{
608 return (void*)ReadNoFence((long*)Source);
609}
610
611__forceinline
612void*
614 _In_ _Interlocked_operand_ void* const volatile *Source)
615{
616 return (void*)ReadRaw((long*)Source);
617}
618
619__forceinline
620void
623 _In_ void* Value)
624{
625 WriteRelease((long*)Destination, (long)Value);
626}
627
628__forceinline
629void
632 _In_opt_ void* Value)
633{
634 WriteNoFence((long*)Destination, (long)Value);
635}
636
637__forceinline
638void
641 _In_opt_ void* Value)
642{
643 WriteRaw((long*)Destination, (long)Value);
644}
645
646#define ReadLongPtrAcquire ReadAcquire
647#define ReadLongPtrNoFence ReadNoFence
648#define ReadLongPtrRaw ReadRaw
649#define WriteLongPtrRelease WriteRelease
650#define WriteLongPtrNoFence WriteNoFence
651#define WriteLongPtrRaw WriteRaw
652#define ReadULongPtrAcquire ReadULongAcquire
653#define ReadULongPtrNoFence ReadULongNoFence
654#define ReadULongPtrRaw ReadULongRaw
655#define WriteULongPtrRelease WriteULongRelease
656#define WriteULongPtrNoFence WriteULongNoFence
657#define WriteULongPtrRaw WriteULongRaw
658
659#endif // _WIN64
660
661#define ReadSizeTAcquire ReadULongPtrAcquire
662#define ReadSizeTNoFence ReadULongPtrNoFence
663#define ReadSizeTRaw ReadULongPtrRaw
664#define WriteSizeTRelease WriteULongPtrRelease
665#define WriteSizeTNoFence WriteULongPtrNoFence
666#define WriteSizeTRaw WriteULongPtrRaw
667
668/* Overloaded functions for C++ */
669#if defined(__cplusplus)
670extern "C++" {
671
672 template<typename T>
673 __forceinline
674 T
675 ReadRaw (
676 _In_ _Interlocked_operand_ T const volatile *Source)
677 {
678 return *(T*)Source;
679 }
680
681 template<typename T>
682 __forceinline
683 void
684 WriteRaw (
686 _In_ T Value)
687 {
688 *(T*)Destination = Value;
689 }
690
691 template<typename T>
692 __forceinline
693 T
695 _In_ _Interlocked_operand_ T const volatile *Source)
696 {
697 switch (sizeof(T))
698 {
699 case 1: return (T)ReadNoFence8((char const volatile *)Source);
700 case 2: return (T)ReadNoFence16((short const volatile *)Source);
701 case 4: return (T)ReadNoFence((long const volatile *)Source);
702 case 8: return (T)ReadNoFence64((__int64 const volatile *)Source);
703 }
704 }
705
706 template<typename T>
707 __forceinline
708 void
711 _In_ T Value)
712 {
713 switch (sizeof(T))
714 {
715 case 1: WriteNoFence8((char volatile *)Destination, (char)Value);
716 case 2: WriteNoFence16((short volatile *)Destination, (short)Value);
717 case 4: WriteNoFence((long volatile *)Destination, (long)Value);
718 case 8: WriteNoFence64((__int64 volatile *)Destination, (__int64)Value);
719 }
720 }
721
722} // extern "C++"
723#endif // __cplusplus
724
725#endif // !defined(RC_INVOKED)
726
727#undef _AcquireBarrier
728#undef _ReleaseBarrier
unsigned char BOOLEAN
#define __int64
Definition: basetyps.h:16
__int8 __iso_volatile_load8(const volatile __int8 *)
__int64 __iso_volatile_load64(const volatile __int64 *)
void __iso_volatile_store8(volatile __int8 *, __int8)
void __iso_volatile_store32(volatile __int32 *, __int32)
__int32 __iso_volatile_load32(const volatile __int32 *)
__int16 __iso_volatile_load16(const volatile __int16 *)
void __iso_volatile_store64(volatile __int64 *, __int64)
void __iso_volatile_store16(volatile __int16 *, __int16)
long _InterlockedOr(_Interlocked_operand_ long volatile *_Value, long _Mask)
__forceinline short ReadAcquire16(_In_ _Interlocked_operand_ short const volatile *Source)
Definition: memaccess.h:230
__forceinline long ReadNoFence(_In_ _Interlocked_operand_ long const volatile *Source)
Definition: memaccess.h:175
__forceinline void WritePointerNoFence(_Out_ _Interlocked_operand_ void *volatile *Destination, _In_opt_ void *Value)
Definition: memaccess.h:630
__forceinline unsigned char ReadUCharAcquire(_In_ _Interlocked_operand_ unsigned char const volatile *Source)
Definition: memaccess.h:291
__forceinline void WriteUShortRaw(_Out_ _Interlocked_operand_ unsigned short volatile *Destination, _In_ unsigned short Value)
Definition: memaccess.h:418
__forceinline unsigned long ReadULongAcquire(_In_ _Interlocked_operand_ unsigned long const volatile *Source)
Definition: memaccess.h:427
__forceinline void WriteULongRaw(_Out_ _Interlocked_operand_ unsigned long volatile *Destination, _In_ unsigned long Value)
Definition: memaccess.h:469
__forceinline void WriteRelease(_Out_ _Interlocked_operand_ long volatile *Destination, _In_ long Value)
Definition: memaccess.h:260
__forceinline void WriteRelease64(_Out_ _Interlocked_operand_ __int64 volatile *Destination, _In_ __int64 Value)
Definition: memaccess.h:280
__forceinline void WriteNoFence64(_Out_ _Interlocked_operand_ __int64 volatile *Destination, _In_ __int64 Value)
Definition: memaccess.h:200
__forceinline void WritePointerRelease(_Out_ _Interlocked_operand_ void *volatile *Destination, _In_ void *Value)
Definition: memaccess.h:621
__forceinline long ReadAcquire(_In_ _Interlocked_operand_ long const volatile *Source)
Definition: memaccess.h:250
__forceinline void * ReadPointerNoFence(_In_ _Interlocked_operand_ void *const volatile *Source)
Definition: memaccess.h:605
__forceinline unsigned short ReadUShortNoFence(_In_ _Interlocked_operand_ unsigned short const volatile *Source)
Definition: memaccess.h:384
__forceinline void WriteUCharRelease(_Out_ _Interlocked_operand_ unsigned char volatile *Destination, _In_ unsigned char Value)
Definition: memaccess.h:315
__forceinline void WriteNoFence(_Out_ _Interlocked_operand_ long volatile *Destination, _In_ long Value)
Definition: memaccess.h:183
__forceinline void * ReadPointerRaw(_In_ _Interlocked_operand_ void *const volatile *Source)
Definition: memaccess.h:613
__forceinline void WriteULong64NoFence(_Out_ _Interlocked_operand_ unsigned __int64 volatile *Destination, _In_ unsigned __int64 Value)
Definition: memaccess.h:511
__forceinline void WritePointerRaw(_Out_ _Interlocked_operand_ void *volatile *Destination, _In_opt_ void *Value)
Definition: memaccess.h:639
__forceinline unsigned __int64 ReadULong64Raw(_In_ _Interlocked_operand_ unsigned __int64 const volatile *Source)
Definition: memaccess.h:494
__forceinline void WriteRelease16(_Out_ _Interlocked_operand_ short volatile *Destination, _In_ short Value)
Definition: memaccess.h:240
__forceinline unsigned long ReadULongNoFence(_In_ _Interlocked_operand_ unsigned long const volatile *Source)
Definition: memaccess.h:435
__forceinline void WriteBooleanNoFence(_Out_ _Interlocked_operand_ BOOLEAN volatile *Destination, _In_ BOOLEAN Value)
Definition: memaccess.h:367
__forceinline __int64 ReadRaw64(_In_ _Interlocked_operand_ __int64 const volatile *Source)
Definition: memaccess.h:124
__forceinline short ReadNoFence16(_In_ _Interlocked_operand_ short const volatile *Source)
Definition: memaccess.h:158
__forceinline char ReadNoFence8(_In_ _Interlocked_operand_ char const volatile *Source)
Definition: memaccess.h:141
__forceinline void WriteUCharNoFence(_Out_ _Interlocked_operand_ unsigned char volatile *Destination, _In_ unsigned char Value)
Definition: memaccess.h:324
__forceinline void WriteULongRelease(_Out_ _Interlocked_operand_ unsigned long volatile *Destination, _In_ unsigned long Value)
Definition: memaccess.h:451
__forceinline __int64 ReadAcquire64(_In_ _Interlocked_operand_ __int64 const volatile *Source)
Definition: memaccess.h:270
__forceinline void WriteRelease8(_Out_ _Interlocked_operand_ char volatile *Destination, _In_ char Value)
Definition: memaccess.h:220
__forceinline unsigned char ReadUCharNoFence(_In_ _Interlocked_operand_ unsigned char const volatile *Source)
Definition: memaccess.h:299
__forceinline void WriteRaw8(_Out_ _Interlocked_operand_ char volatile *Destination, _In_ char Value)
Definition: memaccess.h:81
__forceinline unsigned __int64 ReadULong64Acquire(_In_ _Interlocked_operand_ unsigned __int64 const volatile *Source)
Definition: memaccess.h:478
__forceinline void WriteULong64Raw(_Out_ _Interlocked_operand_ unsigned __int64 volatile *Destination, _In_ unsigned __int64 Value)
Definition: memaccess.h:520
__forceinline void WriteRaw64(_Out_ _Interlocked_operand_ __int64 volatile *Destination, _In_ __int64 Value)
Definition: memaccess.h:132
__forceinline __int64 ReadNoFence64(_In_ _Interlocked_operand_ __int64 const volatile *Source)
Definition: memaccess.h:192
__forceinline void WriteNoFence8(_Out_ _Interlocked_operand_ char volatile *Destination, _In_ char Value)
Definition: memaccess.h:149
$if(0) $endif() __forceinline char ReadRaw8(_In_ _Interlocked_operand_ char const volatile *Source)
Definition: memaccess.h:1
__forceinline void * ReadPointerAcquire(_In_ _Interlocked_operand_ void *const volatile *Source)
Definition: memaccess.h:597
__forceinline void WriteUShortRelease(_Out_ _Interlocked_operand_ unsigned short volatile *Destination, _In_ unsigned short Value)
Definition: memaccess.h:400
__forceinline unsigned char ReadUCharRaw(_In_ _Interlocked_operand_ unsigned char const volatile *Source)
Definition: memaccess.h:307
__forceinline void WriteUCharRaw(_Out_ _Interlocked_operand_ unsigned char volatile *Destination, _In_ unsigned char Value)
Definition: memaccess.h:333
__forceinline unsigned char ReadBooleanNoFence(_In_ _Interlocked_operand_ BOOLEAN const volatile *Source)
Definition: memaccess.h:350
__forceinline unsigned short ReadUShortRaw(_In_ _Interlocked_operand_ unsigned short const volatile *Source)
Definition: memaccess.h:392
__forceinline void WriteULongNoFence(_Out_ _Interlocked_operand_ unsigned long volatile *Destination, _In_ unsigned long Value)
Definition: memaccess.h:460
__forceinline unsigned short ReadUShortAcquire(_In_ _Interlocked_operand_ unsigned short const volatile *Source)
Definition: memaccess.h:376
__forceinline char ReadAcquire8(_In_ _Interlocked_operand_ char const volatile *Source)
Definition: memaccess.h:210
__forceinline void WriteNoFence16(_Out_ _Interlocked_operand_ short volatile *Destination, _In_ short Value)
Definition: memaccess.h:166
__forceinline unsigned long ReadULongRaw(_In_ _Interlocked_operand_ unsigned long const volatile *Source)
Definition: memaccess.h:443
__forceinline void WriteUShortNoFence(_Out_ _Interlocked_operand_ unsigned short volatile *Destination, _In_ unsigned short Value)
Definition: memaccess.h:409
__forceinline void WriteRaw16(_Out_ _Interlocked_operand_ short volatile *Destination, _In_ short Value)
Definition: memaccess.h:98
__forceinline short ReadRaw16(_In_ _Interlocked_operand_ short const volatile *Source)
Definition: memaccess.h:90
__forceinline BOOLEAN ReadBooleanAcquire(_In_ _Interlocked_operand_ BOOLEAN const volatile *Source)
Definition: memaccess.h:342
__forceinline void WriteRaw(_Out_ _Interlocked_operand_ long volatile *Destination, _In_ long Value)
Definition: memaccess.h:115
__forceinline void WriteULong64Release(_Out_ _Interlocked_operand_ unsigned __int64 volatile *Destination, _In_ unsigned __int64 Value)
Definition: memaccess.h:502
__forceinline void WriteBooleanRelease(_Out_ _Interlocked_operand_ BOOLEAN volatile *Destination, _In_ BOOLEAN Value)
Definition: memaccess.h:358
__forceinline long ReadRaw(_In_ _Interlocked_operand_ long const volatile *Source)
Definition: memaccess.h:107
__forceinline unsigned __int64 ReadULong64NoFence(_In_ _Interlocked_operand_ unsigned __int64 const volatile *Source)
Definition: memaccess.h:486
_In_ UINT _In_ UINT _In_ PNDIS_PACKET Source
Definition: ndis.h:3169
_In_ PUNICODE_STRING _Inout_ PUNICODE_STRING Destination
Definition: rtlfuncs.h:3051
#define _Out_
Definition: no_sal2.h:160
#define _In_
Definition: no_sal2.h:158
#define _In_opt_
Definition: no_sal2.h:212
#define _Interlocked_operand_
Definition: no_sal2.h:410
#define T(num)
Definition: thunks.c:311
#define MemoryBarrier
Definition: ke.h:49
$endif(_WDMDDK_) $if(_NTDDK_) typedef struct _NEON128
Definition: ke.h:202
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
Definition: wdfregistry.h:413