d67e8e4be4c09541344229d1a7fdb85c39d101a9
[reactos.git] / rostests / kmtests / ntos_mm / MmMapLockedPagesSpecifyCache_user.c
1 /*
2 * PROJECT: ReactOS kernel-mode tests
3 * LICENSE: GPLv2+ - See COPYING in the top level directory
4 * PURPOSE: Kernel-Mode Test Suite MmMapLockedPagesSpecifyCache test user-mode part
5 * PROGRAMMER: Pierre Schweitzer <pierre@reactos.org>
6 */
7
8 #include <kmt_test.h>
9
10 #include "MmMapLockedPagesSpecifyCache.h"
11
12 START_TEST(MmMapLockedPagesSpecifyCache)
13 {
14 QUERY_BUFFER QueryBuffer;
15 READ_BUFFER ReadBuffer;
16 DWORD Length;
17 USHORT i;
18 PUSHORT Buffer;
19
20 KmtLoadDriver(L"MmMapLockedPagesSpecifyCache", FALSE);
21 KmtOpenDriver();
22
23 QueryBuffer.Length = 0x100;
24 QueryBuffer.Buffer = NULL;
25 QueryBuffer.Cached = FALSE;
26 Length = sizeof(QUERY_BUFFER);
27 ok(KmtSendBufferToDriver(IOCTL_QUERY_BUFFER, &QueryBuffer, sizeof(QUERY_BUFFER), &Length) == ERROR_SUCCESS, "\n");
28 ok_eq_int(QueryBuffer.Length, 0x100);
29 ok_eq_pointer(QueryBuffer.Buffer, NULL);
30
31 ReadBuffer.Buffer = QueryBuffer.Buffer;
32 Length = 0;
33 ok(KmtSendBufferToDriver(IOCTL_READ_BUFFER, &ReadBuffer, sizeof(READ_BUFFER), &Length) == ERROR_SUCCESS, "\n");
34
35 QueryBuffer.Length = 0x100;
36 QueryBuffer.Buffer = NULL;
37 QueryBuffer.Cached = TRUE;
38 Length = sizeof(QUERY_BUFFER);
39 ok(KmtSendBufferToDriver(IOCTL_QUERY_BUFFER, &QueryBuffer, sizeof(QUERY_BUFFER), &Length) == ERROR_SUCCESS, "\n");
40 ok_eq_int(QueryBuffer.Length, 0x100);
41 ok(QueryBuffer.Buffer != NULL, "Buffer is NULL\n");
42
43 ReadBuffer.Buffer = QueryBuffer.Buffer;
44 if (!skip(QueryBuffer.Buffer != NULL, "Buffer is NULL\n"))
45 {
46 ReadBuffer.Pattern = 0xA7;
47 ReadBuffer.Length = QueryBuffer.Length;
48 Buffer = QueryBuffer.Buffer;
49 for (i = 0; i < ReadBuffer.Length / sizeof(USHORT); ++i)
50 {
51 Buffer[i] = ReadBuffer.Pattern;
52 }
53 }
54
55 Length = 0;
56 ok(KmtSendBufferToDriver(IOCTL_READ_BUFFER, &ReadBuffer, sizeof(READ_BUFFER), &Length) == ERROR_SUCCESS, "\n");
57
58 KmtCloseDriver();
59 KmtUnloadDriver();
60 }