2 * PROJECT: ReactOS kernel-mode tests
3 * LICENSE: GPLv2+ - See COPYING in the top level directory
4 * PURPOSE: Kernel-Mode Test Suite Runtime library memory functions test
5 * PROGRAMMER: Thomas Faber <thomas.faber@reactos.org>
9 __declspec(dllimport
) void __stdcall
RtlMoveMemory(void *, const void *, size_t);
10 __declspec(dllimport
) void __stdcall
RtlFillMemory(void *, size_t, unsigned char);
12 #define KMT_EMULATE_KERNEL
16 #pragma GCC diagnostic ignored "-Wnonnull"
17 #endif /* defined __GNUC__ */
25 PUCHAR OutBuffer
= Buffer
;
30 va_start(Arguments
, Buffer
);
34 Count
= va_arg(Arguments
, INT
);
39 Value
= va_arg(Arguments
, INT
);
50 IN
const VOID
*Buffer
,
53 CONST UCHAR
*OutBuffer
= Buffer
;
58 va_start(Arguments
, Buffer
);
62 Count
= va_arg(Arguments
, INT
);
67 Value
= va_arg(Arguments
, INT
);
69 if (*OutBuffer
++ != Value
)
72 trace("CheckBuffer failed at offset %d, value %x, expected %x\n", OutBuffer
- (CONST UCHAR
*)Buffer
, *OutBuffer
, Value
);
87 PUCHAR OutBuffer
= Buffer
;
92 va_start(Arguments
, Buffer
);
96 Count
= va_arg(Arguments
, INT
);
99 ASSERT(Count
> 0 && Count
< sizeof Values
/ sizeof Values
[0]);
101 Repeat
= va_arg(Arguments
, INT
);
104 for (i
= 0; i
< Count
; ++i
)
105 Values
[i
] = va_arg(Arguments
, INT
);
108 for (i
= 0; i
< Count
; ++i
)
109 *OutBuffer
++ = Values
[i
];
118 IN
const VOID
*Buffer
,
121 CONST UCHAR
*OutBuffer
= Buffer
;
122 INT Count
, Repeat
, i
;
126 va_start(Arguments
, Buffer
);
130 Count
= va_arg(Arguments
, INT
);
133 ASSERT(Count
> 0 && Count
< sizeof Values
/ sizeof Values
[0]);
135 Repeat
= va_arg(Arguments
, INT
);
138 for (i
= 0; i
< Count
; ++i
)
139 Values
[i
] = va_arg(Arguments
, INT
);
142 for (i
= 0; i
< Count
; ++i
)
143 if (*OutBuffer
++ != Values
[i
])
146 trace("CheckPattern failed at offset %d, value %x, expected %x\n", OutBuffer
- (CONST UCHAR
*)Buffer
, *OutBuffer
, Values
[i
]);
155 START_TEST(RtlMemory
)
159 const SIZE_T Size
= 512;
160 const SIZE_T HalfSize
= Size
/ 2;
165 KeRaiseIrql(HIGH_LEVEL
, &Irql
);
166 /* zero everything behind 'Size'. Tests will check that this wasn't changed.
167 * TODO: use guarded memory for this! */
168 MakeBuffer(Buffer
+ Size
, sizeof Buffer
- Size
, 0, 0);
170 /* test our helper functions first */
171 MakeBuffer(Buffer
, HalfSize
, 0x55, HalfSize
, 0xAA, 0);
172 for (i
= 0; i
< HalfSize
; ++i
)
173 ok_eq_uint(Buffer
[i
], 0x55);
174 for (i
= HalfSize
; i
< Size
; ++i
)
175 ok_eq_uint(Buffer
[i
], 0xAA);
176 ok_bool_true(CheckBuffer(Buffer
, HalfSize
, 0x55, HalfSize
, 0xAA, 1, 0, 0), "CheckBuffer");
178 MakePattern(Buffer
, 3, 20, 0x11, 0x22, 0x33, 1, 4, 0x44, 0);
179 for (i
= 0; i
< 60; i
+= 3)
181 ok_eq_uint(Buffer
[i
+0], 0x11);
182 ok_eq_uint(Buffer
[i
+1], 0x22);
183 ok_eq_uint(Buffer
[i
+2], 0x33);
185 for (i
= 60; i
< 64; ++i
)
186 ok_eq_uint(Buffer
[i
], 0x44);
187 for (i
= 64; i
< HalfSize
; ++i
)
188 ok_eq_uint(Buffer
[i
], 0x55);
189 for (i
= HalfSize
; i
< Size
; ++i
)
190 ok_eq_uint(Buffer
[i
], 0xAA);
191 ok_bool_true(CheckPattern(Buffer
, 3, 20, 0x11, 0x22, 0x33, 1, 4, 0x44, 0), "CheckPattern");
194 MakePattern(Buffer
, 2, 64, 0x12, 0x34, 2, 192, 0x56, 0x78, 0);
195 RtlMoveMemory(Buffer
+ 13, Buffer
+ 62, 95);
196 ok_bool_true(CheckPattern(Buffer
, 2, 6, 0x12, 0x34, 1, 1, 0x12, 2, 33, 0x12, 0x34, 2, 14, 0x56, 0x78, 1, 1, 0x56, 2, 10, 0x12, 0x34, 2, 192, 0x56, 0x78, 1, 1, 0, 0), "CheckPattern");
198 MakePattern(Buffer
, 2, 32, 0x12, 0x34, 2, 32, 0x56, 0x78, 2, 192, 0x9A, 0xAB, 0);
199 RtlMoveMemory(Buffer
+ 78, Buffer
+ 43, 107);
200 ok_bool_true(CheckPattern(Buffer
, 2, 32, 0x12, 0x34, 2, 7, 0x56, 0x78, 1, 1, 0x34, 2, 10, 0x12, 0x34, 2, 32, 0x56, 0x78, 2, 11, 0x9A, 0xAB, 1, 1, 0xAB, 2, 163, 0x9A, 0xAB, 1, 1, 0, 0), "CheckPattern");
203 Status
= STATUS_SUCCESS
;
205 RtlMoveMemory(NULL
, NULL
, 0);
206 } _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER
) {
207 Status
= _SEH2_GetExceptionCode();
209 ok_eq_hex(Status
, STATUS_SUCCESS
);
210 KeRaiseIrql(HIGH_LEVEL
, &Irql
);
213 /* RtlMoveMemory export */
214 MakePattern(Buffer
, 2, 64, 0x12, 0x34, 2, 192, 0x56, 0x78, 0);
215 RtlMoveMemory(Buffer
+ 13, Buffer
+ 62, 95);
216 ok_bool_true(CheckPattern(Buffer
, 2, 6, 0x12, 0x34, 1, 1, 0x12, 2, 33, 0x12, 0x34, 2, 14, 0x56, 0x78, 1, 1, 0x56, 2, 10, 0x12, 0x34, 2, 192, 0x56, 0x78, 1, 1, 0, 0), "CheckPattern");
218 MakePattern(Buffer
, 2, 32, 0x12, 0x34, 2, 32, 0x56, 0x78, 2, 192, 0x9A, 0xAB, 0);
219 RtlMoveMemory(Buffer
+ 78, Buffer
+ 43, 107);
220 ok_bool_true(CheckPattern(Buffer
, 2, 32, 0x12, 0x34, 2, 7, 0x56, 0x78, 1, 1, 0x34, 2, 10, 0x12, 0x34, 2, 32, 0x56, 0x78, 2, 11, 0x9A, 0xAB, 1, 1, 0xAB, 2, 163, 0x9A, 0xAB, 1, 1, 0, 0), "CheckPattern");
223 Status
= STATUS_SUCCESS
;
225 RtlMoveMemory(NULL
, NULL
, 0);
226 } _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER
) {
227 Status
= _SEH2_GetExceptionCode();
229 ok_eq_hex(Status
, STATUS_SUCCESS
);
230 KeRaiseIrql(HIGH_LEVEL
, &Irql
);
233 MakePattern(Buffer
, 2, 64, 0x12, 0x34, 2, 192, 0x56, 0x78, 0);
234 RtlCopyMemory(Buffer
+ 13, Buffer
+ 62, 95);
235 ok_bool_true(CheckPattern(Buffer
, 2, 6, 0x12, 0x34, 1, 1, 0x12, 2, 33, 0x12, 0x34, 2, 14, 0x56, 0x78, 1, 1, 0x56, 2, 10, 0x12, 0x34, 2, 192, 0x56, 0x78, 1, 1, 0, 0), "CheckPattern");
237 MakePattern(Buffer
, 2, 32, 0x12, 0x34, 2, 32, 0x56, 0x78, 2, 192, 0x9A, 0xAB, 0);
238 RtlCopyMemory(Buffer
+ 78, Buffer
+ 43, 107);
239 ok_bool_true(CheckPattern(Buffer
, 2, 32, 0x12, 0x34, 2, 7, 0x56, 0x78, 1, 1, 0x34, 2, 10, 0x12, 0x34, 2, 32, 0x56, 0x78, 2, 11, 0x9A, 0xAB, 1, 1, 0xAB, 2, 163, 0x9A, 0xAB, 1, 1, 0, 0), "CheckPattern");
242 Status
= STATUS_SUCCESS
;
244 RtlCopyMemory(NULL
, NULL
, 0);
245 } _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER
) {
246 Status
= _SEH2_GetExceptionCode();
248 ok_eq_hex(Status
, STATUS_SUCCESS
);
249 KeRaiseIrql(HIGH_LEVEL
, &Irql
);
251 /* RtlCopyMemoryNonTemporal */
252 MakePattern(Buffer
, 2, 64, 0x12, 0x34, 2, 192, 0x56, 0x78, 0);
253 RtlCopyMemoryNonTemporal(Buffer
+ 13, Buffer
+ 62, 95);
254 ok_bool_true(CheckPattern(Buffer
, 2, 6, 0x12, 0x34, 1, 1, 0x12, 2, 33, 0x12, 0x34, 2, 14, 0x56, 0x78, 1, 1, 0x56, 2, 10, 0x12, 0x34, 2, 192, 0x56, 0x78, 1, 1, 0, 0), "CheckPattern");
256 MakePattern(Buffer
, 2, 32, 0x12, 0x34, 2, 32, 0x56, 0x78, 2, 192, 0x9A, 0xAB, 0);
257 RtlCopyMemoryNonTemporal(Buffer
+ 78, Buffer
+ 43, 107);
258 ok_bool_true(CheckPattern(Buffer
, 2, 32, 0x12, 0x34, 2, 7, 0x56, 0x78, 1, 1, 0x34, 2, 10, 0x12, 0x34, 2, 32, 0x56, 0x78, 2, 11, 0x9A, 0xAB, 1, 1, 0xAB, 2, 163, 0x9A, 0xAB, 1, 1, 0, 0), "CheckPattern");
261 Status
= STATUS_SUCCESS
;
263 RtlCopyMemoryNonTemporal(NULL
, NULL
, 0);
264 } _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER
) {
265 Status
= _SEH2_GetExceptionCode();
267 ok_eq_hex(Status
, STATUS_SUCCESS
);
268 KeRaiseIrql(HIGH_LEVEL
, &Irql
);
271 MakePattern(Buffer
, 2, 64, 0x12, 0x34, 2, 192, 0x56, 0x78, 0);
272 RtlCopyBytes(Buffer
+ 13, Buffer
+ 62, 95);
273 ok_bool_true(CheckPattern(Buffer
, 2, 6, 0x12, 0x34, 1, 1, 0x12, 2, 33, 0x12, 0x34, 2, 14, 0x56, 0x78, 1, 1, 0x56, 2, 10, 0x12, 0x34, 2, 192, 0x56, 0x78, 1, 1, 0, 0), "CheckPattern");
275 MakePattern(Buffer
, 2, 32, 0x12, 0x34, 2, 32, 0x56, 0x78, 2, 192, 0x9A, 0xAB, 0);
276 RtlCopyBytes(Buffer
+ 78, Buffer
+ 43, 107);
277 ok_bool_true(CheckPattern(Buffer
, 2, 32, 0x12, 0x34, 2, 7, 0x56, 0x78, 1, 1, 0x34, 2, 10, 0x12, 0x34, 2, 32, 0x56, 0x78, 2, 11, 0x9A, 0xAB, 1, 1, 0xAB, 2, 163, 0x9A, 0xAB, 1, 1, 0, 0), "CheckPattern");
280 Status
= STATUS_SUCCESS
;
282 RtlCopyBytes(NULL
, NULL
, 0);
283 } _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER
) {
284 Status
= _SEH2_GetExceptionCode();
286 ok_eq_hex(Status
, STATUS_SUCCESS
);
287 KeRaiseIrql(HIGH_LEVEL
, &Irql
);
290 MakePattern(Buffer
, 8, HalfSize
/ 8 - 1, 0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0xDE, 0xF0,
292 8, HalfSize
/ 8, 0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0xDE, 0xF0,
295 ok_bool_true(RtlEqualMemory((PVOID
)1, (PVOID
)2, 0),
296 "RtlEqualMemory returned");
297 ok_bool_true(RtlEqualMemory(Buffer
, Buffer
+ HalfSize
- 7, HalfSize
- 8),
298 "RtlEqualMemory returned");
299 ok_bool_true(RtlEqualMemory(Buffer
, Buffer
+ HalfSize
- 7, HalfSize
- 8 + 1),
300 "RtlEqualMemory returned");
301 ok_bool_false(RtlEqualMemory(Buffer
, Buffer
+ HalfSize
- 7, HalfSize
- 8 + 2),
302 "RtlEqualMemory returned");
304 /* RtlCompareMemory */
305 MakePattern(Buffer
, 8, HalfSize
/ 8 - 1, 0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0xDE, 0xF0,
307 8, HalfSize
/ 8, 0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0xDE, 0xF0,
310 RetSize
= RtlCompareMemory(Buffer
, Buffer
+ HalfSize
- 7, HalfSize
- 8);
311 ok_eq_size(RetSize
, HalfSize
- 8);
312 RetSize
= RtlCompareMemory(Buffer
, Buffer
+ HalfSize
- 7, HalfSize
- 8 + 1);
313 ok_eq_size(RetSize
, HalfSize
- 8 + 1);
314 RetSize
= RtlCompareMemory(Buffer
, Buffer
+ HalfSize
- 7, HalfSize
- 8 + 2);
315 ok_eq_size(RetSize
, HalfSize
- 8 + 1);
318 Status
= STATUS_SUCCESS
;
320 RetSize
= RtlCompareMemory(Buffer
, Buffer
+ HalfSize
- 7, SIZE_MAX
);
321 ok_eq_size(RetSize
, HalfSize
- 8 + 1);
322 RetSize
= RtlCompareMemory(NULL
, NULL
, 0);
323 ok_eq_size(RetSize
, 0);
324 } _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER
) {
325 Status
= _SEH2_GetExceptionCode();
327 ok_eq_hex(Status
, STATUS_SUCCESS
);
328 KeRaiseIrql(HIGH_LEVEL
, &Irql
);
330 /* RtlCompareMemoryUlong */
331 MakeBuffer(Buffer
, 8, 0x55, Size
- 8, 0, 0);
332 RetSize
= RtlCompareMemoryUlong(Buffer
, sizeof(ULONG
), 0x55555555LU
);
333 ok_eq_size(RetSize
, 4);
334 RetSize
= RtlCompareMemoryUlong(Buffer
+ 1, sizeof(ULONG
), 0x55555555LU
);
335 ok_eq_size(RetSize
, 4);
336 RetSize
= RtlCompareMemoryUlong(Buffer
+ 2, sizeof(ULONG
), 0x55555555LU
);
337 ok_eq_size(RetSize
, 4);
338 RetSize
= RtlCompareMemoryUlong(Buffer
+ 3, sizeof(ULONG
), 0x55555555LU
);
339 ok_eq_size(RetSize
, 4);
340 RetSize
= RtlCompareMemoryUlong(Buffer
+ 5, sizeof(ULONG
), 0x55555555LU
);
341 ok_eq_size(RetSize
, 0);
342 RetSize
= RtlCompareMemoryUlong(Buffer
+ 5, sizeof(ULONG
), 0x00555555LU
);
343 ok_eq_size(RetSize
, 4);
344 RetSize
= RtlCompareMemoryUlong(Buffer
, 1, 0x55555555LU
);
345 ok_eq_size(RetSize
, 0);
346 RetSize
= RtlCompareMemoryUlong(Buffer
, 2, 0x55555555LU
);
347 ok_eq_size(RetSize
, 0);
348 RetSize
= RtlCompareMemoryUlong(Buffer
, 3, 0x55555555LU
);
349 ok_eq_size(RetSize
, 0);
350 RetSize
= RtlCompareMemoryUlong(Buffer
, 5, 0x55555555LU
);
351 ok_eq_size(RetSize
, 4);
354 Status
= STATUS_SUCCESS
;
356 RetSize
= RtlCompareMemoryUlong(NULL
, 0, 0x55555555LU
);
357 ok_eq_size(RetSize
, 0);
358 } _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER
) {
359 Status
= _SEH2_GetExceptionCode();
361 ok_eq_hex(Status
, STATUS_SUCCESS
);
362 KeRaiseIrql(HIGH_LEVEL
, &Irql
);
365 MakeBuffer(Buffer
, Size
, 0x11, 0);
366 RtlZeroMemory(Buffer
, 1);
367 ok_bool_true(CheckBuffer(Buffer
, 1, 0, Size
- 1, 0x11, 1, 0, 0), "CheckBuffer");
369 RtlZeroMemory(Buffer
, Size
- 1);
370 ok_bool_true(CheckBuffer(Buffer
, Size
- 1, 0, 1, 0x11, 1, 0, 0), "CheckBuffer");
373 Status
= STATUS_SUCCESS
;
375 RtlZeroMemory(NULL
, 0);
376 } _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER
) {
377 Status
= _SEH2_GetExceptionCode();
379 ok_eq_hex(Status
, STATUS_SUCCESS
);
380 KeRaiseIrql(HIGH_LEVEL
, &Irql
);
382 /* RtlSecureZeroMemory */
383 MakeBuffer(Buffer
, Size
, 0x11, 0);
384 RtlSecureZeroMemory(Buffer
, 1);
385 ok_bool_true(CheckBuffer(Buffer
, 1, 0, Size
- 1, 0x11, 1, 0, 0), "CheckBuffer");
387 RtlSecureZeroMemory(Buffer
, Size
- 1);
388 ok_bool_true(CheckBuffer(Buffer
, Size
- 1, 0, 1, 0x11, 1, 0, 0), "CheckBuffer");
391 Status
= STATUS_SUCCESS
;
393 RtlSecureZeroMemory(NULL
, 0);
394 } _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER
) {
395 Status
= _SEH2_GetExceptionCode();
397 ok_eq_hex(Status
, STATUS_SUCCESS
);
398 KeRaiseIrql(HIGH_LEVEL
, &Irql
);
401 MakeBuffer(Buffer
, Size
, 0x11, 0);
402 RtlZeroBytes(Buffer
, 1);
403 ok_bool_true(CheckBuffer(Buffer
, 1, 0, Size
- 1, 0x11, 1, 0, 0), "CheckBuffer");
405 RtlZeroBytes(Buffer
, Size
- 1);
406 ok_bool_true(CheckBuffer(Buffer
, Size
- 1, 0, 1, 0x11, 1, 0, 0), "CheckBuffer");
409 Status
= STATUS_SUCCESS
;
411 RtlZeroBytes(NULL
, 0);
412 } _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER
) {
413 Status
= _SEH2_GetExceptionCode();
415 ok_eq_hex(Status
, STATUS_SUCCESS
);
416 KeRaiseIrql(HIGH_LEVEL
, &Irql
);
419 MakeBuffer(Buffer
, Size
, 0, 0);
420 RtlFillMemory(Buffer
, HalfSize
, 0x55);
421 RtlFillMemory(Buffer
+ HalfSize
, HalfSize
, 0xAA);
422 ok_bool_true(CheckBuffer(Buffer
, HalfSize
, 0x55, HalfSize
, 0xAA, 1, 0, 0), "CheckBuffer");
423 RtlFillMemory(Buffer
+ 3, 7, 0x88);
424 ok_bool_true(CheckBuffer(Buffer
, 3, 0x55, 7, 0x88, HalfSize
- 10, 0x55, HalfSize
, 0xAA, 1, 0, 0), "CheckBuffer");
427 Status
= STATUS_SUCCESS
;
429 RtlFillMemory(NULL
, 0, 0x55);
430 } _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER
) {
431 Status
= _SEH2_GetExceptionCode();
433 ok_eq_hex(Status
, STATUS_SUCCESS
);
434 KeRaiseIrql(HIGH_LEVEL
, &Irql
);
437 /* RtlFillMemory export */
438 MakeBuffer(Buffer
, Size
, 0, 0);
439 RtlFillMemory(Buffer
, HalfSize
, 0x55);
440 RtlFillMemory(Buffer
+ HalfSize
, HalfSize
, 0xAA);
441 ok_bool_true(CheckBuffer(Buffer
, HalfSize
, 0x55, HalfSize
, 0xAA, 1, 0, 0), "CheckBuffer");
442 RtlFillMemory(Buffer
+ 3, 7, 0x88);
443 ok_bool_true(CheckBuffer(Buffer
, 3, 0x55, 7, 0x88, HalfSize
- 10, 0x55, HalfSize
, 0xAA, 1, 0, 0), "CheckBuffer");
446 Status
= STATUS_SUCCESS
;
448 RtlFillMemory(NULL
, 0, 0x55);
449 } _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER
) {
450 Status
= _SEH2_GetExceptionCode();
452 ok_eq_hex(Status
, STATUS_SUCCESS
);
453 KeRaiseIrql(HIGH_LEVEL
, &Irql
);
455 /* TODO: fix NDK. This should work! */
456 #if !defined _M_AMD64 || defined KMT_KERNEL_MODE
457 /* RtlFillMemoryUlong */
458 MakeBuffer(Buffer
, Size
, 0, 0);
459 RtlFillMemoryUlong(Buffer
, HalfSize
, 0x01234567LU
);
460 RtlFillMemoryUlong(Buffer
+ HalfSize
, HalfSize
, 0x89ABCDEFLU
);
461 ok_bool_true(CheckPattern(Buffer
, 4, HalfSize
/ 4, 0x67, 0x45, 0x23, 0x01, 4, HalfSize
/ 4, 0xEF, 0xCD, 0xAB, 0x89, 1, 1, 0, 0), "CheckPattern");
464 Status
= STATUS_SUCCESS
;
466 MakeBuffer(Buffer
, Size
, 0, 0);
467 RtlFillMemoryUlong(Buffer
+ 1, sizeof(ULONG
), 0xAAAAAAAALU
);
468 ok_bool_true(CheckBuffer(Buffer
, 1, 0, sizeof(ULONG
), 0xAA, Size
- sizeof(ULONG
) - 1, 0, 1, 0, 0), "CheckBuffer");
470 RtlFillMemoryUlong(NULL
, 0, 0x55555555LU
);
471 } _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER
) {
472 Status
= _SEH2_GetExceptionCode();
474 ok_eq_hex(Status
, STATUS_SUCCESS
);
475 KeRaiseIrql(HIGH_LEVEL
, &Irql
);
478 /* RtlFillMemoryUlonglong */
479 /* TODO: this function doesn't exist in 2k3/x86? wdm.h error? */
482 MakeBuffer(Buffer
, Size
, 0, 0);
483 RtlFillBytes(Buffer
, HalfSize
, 0x55);
484 RtlFillBytes(Buffer
+ HalfSize
, HalfSize
, 0xAA);
485 ok_bool_true(CheckBuffer(Buffer
, HalfSize
, 0x55, HalfSize
, 0xAA, 1, 0, 0), "CheckBuffer");
486 RtlFillBytes(Buffer
+ 3, 7, 0x88);
487 ok_bool_true(CheckBuffer(Buffer
, 3, 0x55, 7, 0x88, HalfSize
- 10, 0x55, HalfSize
, 0xAA, 1, 0, 0), "CheckBuffer");
490 Status
= STATUS_SUCCESS
;
492 RtlFillBytes(NULL
, 0, 0x55);
493 } _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER
) {
494 Status
= _SEH2_GetExceptionCode();
496 ok_eq_hex(Status
, STATUS_SUCCESS
);
497 KeRaiseIrql(HIGH_LEVEL
, &Irql
);
499 /* RtlPrefetchMemoryNonTemporal */
500 RtlPrefetchMemoryNonTemporal(Buffer
, Size
);
503 Status
= STATUS_SUCCESS
;
505 RtlPrefetchMemoryNonTemporal(NULL
, 0);
506 } _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER
) {
507 Status
= _SEH2_GetExceptionCode();
509 ok_eq_hex(Status
, STATUS_SUCCESS
);
510 KeRaiseIrql(HIGH_LEVEL
, &Irql
);