mirror of
https://github.com/reactos/reactos.git
synced 2025-05-30 06:28:34 +00:00
[KMTESTS:MM]
- In the MmMapLockedPagesSpecifyCache test, try to allocate & free memory or unmap a section view in the mapped buffer space CORE-13444 svn path=/trunk/; revision=75057
This commit is contained in:
parent
57206b450b
commit
8c8f34f7fd
1 changed files with 43 additions and 0 deletions
|
@ -38,6 +38,39 @@
|
||||||
} \
|
} \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define CHECK_ALLOC(MappedBuffer, BufferLength) \
|
||||||
|
{ \
|
||||||
|
NTSTATUS Status; \
|
||||||
|
PVOID BaseAddress; \
|
||||||
|
SIZE_T Size; \
|
||||||
|
BaseAddress = MappedBuffer; \
|
||||||
|
Size = BufferLength; \
|
||||||
|
Status = NtAllocateVirtualMemory(NtCurrentProcess(), \
|
||||||
|
&BaseAddress, \
|
||||||
|
0, \
|
||||||
|
&Size, \
|
||||||
|
MEM_RESERVE, \
|
||||||
|
PAGE_READWRITE); \
|
||||||
|
ok_eq_hex(Status, STATUS_CONFLICTING_ADDRESSES); \
|
||||||
|
BaseAddress = MappedBuffer; \
|
||||||
|
Size = 0; \
|
||||||
|
Status = NtFreeVirtualMemory(NtCurrentProcess(), \
|
||||||
|
&BaseAddress, \
|
||||||
|
&Size, \
|
||||||
|
MEM_DECOMMIT); \
|
||||||
|
ok_eq_hex(Status, STATUS_UNABLE_TO_DELETE_SECTION); \
|
||||||
|
BaseAddress = MappedBuffer; \
|
||||||
|
Size = 0; \
|
||||||
|
Status = NtFreeVirtualMemory(NtCurrentProcess(), \
|
||||||
|
&BaseAddress, \
|
||||||
|
&Size, \
|
||||||
|
MEM_RELEASE); \
|
||||||
|
ok_eq_hex(Status, STATUS_UNABLE_TO_DELETE_SECTION); \
|
||||||
|
Status = NtUnmapViewOfSection(NtCurrentProcess(), \
|
||||||
|
MappedBuffer); \
|
||||||
|
ok_eq_hex(Status, STATUS_NOT_MAPPED_VIEW); \
|
||||||
|
}
|
||||||
|
|
||||||
START_TEST(MmMapLockedPagesSpecifyCache)
|
START_TEST(MmMapLockedPagesSpecifyCache)
|
||||||
{
|
{
|
||||||
QUERY_BUFFER QueryBuffer;
|
QUERY_BUFFER QueryBuffer;
|
||||||
|
@ -56,6 +89,7 @@ START_TEST(MmMapLockedPagesSpecifyCache)
|
||||||
ok(KmtSendBufferToDriver(IOCTL_QUERY_BUFFER, &QueryBuffer, sizeof(QUERY_BUFFER), &Length) == ERROR_SUCCESS, "\n");
|
ok(KmtSendBufferToDriver(IOCTL_QUERY_BUFFER, &QueryBuffer, sizeof(QUERY_BUFFER), &Length) == ERROR_SUCCESS, "\n");
|
||||||
ok_eq_int(QueryBuffer.Length, BufferLength);
|
ok_eq_int(QueryBuffer.Length, BufferLength);
|
||||||
ok(QueryBuffer.Buffer != NULL, "Buffer is NULL\n");
|
ok(QueryBuffer.Buffer != NULL, "Buffer is NULL\n");
|
||||||
|
CHECK_ALLOC(QueryBuffer.Buffer, BufferLength);
|
||||||
|
|
||||||
Length = 0;
|
Length = 0;
|
||||||
FILL_READ_BUFFER(QueryBuffer, ReadBuffer);
|
FILL_READ_BUFFER(QueryBuffer, ReadBuffer);
|
||||||
|
@ -66,6 +100,7 @@ START_TEST(MmMapLockedPagesSpecifyCache)
|
||||||
ok(KmtSendBufferToDriver(IOCTL_QUERY_BUFFER, &QueryBuffer, sizeof(QUERY_BUFFER), &Length) == ERROR_SUCCESS, "\n");
|
ok(KmtSendBufferToDriver(IOCTL_QUERY_BUFFER, &QueryBuffer, sizeof(QUERY_BUFFER), &Length) == ERROR_SUCCESS, "\n");
|
||||||
ok_eq_int(QueryBuffer.Length, BufferLength);
|
ok_eq_int(QueryBuffer.Length, BufferLength);
|
||||||
ok(QueryBuffer.Buffer != NULL, "Buffer is NULL\n");
|
ok(QueryBuffer.Buffer != NULL, "Buffer is NULL\n");
|
||||||
|
CHECK_ALLOC(QueryBuffer.Buffer, BufferLength);
|
||||||
|
|
||||||
Length = 0;
|
Length = 0;
|
||||||
FILL_READ_BUFFER(QueryBuffer, ReadBuffer);
|
FILL_READ_BUFFER(QueryBuffer, ReadBuffer);
|
||||||
|
@ -78,6 +113,7 @@ START_TEST(MmMapLockedPagesSpecifyCache)
|
||||||
ok(KmtSendBufferToDriver(IOCTL_QUERY_BUFFER, &QueryBuffer, sizeof(QUERY_BUFFER), &Length) == ERROR_SUCCESS, "\n");
|
ok(KmtSendBufferToDriver(IOCTL_QUERY_BUFFER, &QueryBuffer, sizeof(QUERY_BUFFER), &Length) == ERROR_SUCCESS, "\n");
|
||||||
ok_eq_int(QueryBuffer.Length, BufferLength);
|
ok_eq_int(QueryBuffer.Length, BufferLength);
|
||||||
ok(QueryBuffer.Buffer != NULL, "Buffer is NULL\n");
|
ok(QueryBuffer.Buffer != NULL, "Buffer is NULL\n");
|
||||||
|
CHECK_ALLOC(QueryBuffer.Buffer, BufferLength);
|
||||||
|
|
||||||
Length = 0;
|
Length = 0;
|
||||||
FILL_READ_BUFFER(QueryBuffer, ReadBuffer);
|
FILL_READ_BUFFER(QueryBuffer, ReadBuffer);
|
||||||
|
@ -88,6 +124,7 @@ START_TEST(MmMapLockedPagesSpecifyCache)
|
||||||
ok(KmtSendBufferToDriver(IOCTL_QUERY_BUFFER, &QueryBuffer, sizeof(QUERY_BUFFER), &Length) == ERROR_SUCCESS, "\n");
|
ok(KmtSendBufferToDriver(IOCTL_QUERY_BUFFER, &QueryBuffer, sizeof(QUERY_BUFFER), &Length) == ERROR_SUCCESS, "\n");
|
||||||
ok_eq_int(QueryBuffer.Length, BufferLength);
|
ok_eq_int(QueryBuffer.Length, BufferLength);
|
||||||
ok(QueryBuffer.Buffer != NULL, "Buffer is NULL\n");
|
ok(QueryBuffer.Buffer != NULL, "Buffer is NULL\n");
|
||||||
|
CHECK_ALLOC(QueryBuffer.Buffer, BufferLength);
|
||||||
|
|
||||||
Length = 0;
|
Length = 0;
|
||||||
FILL_READ_BUFFER(QueryBuffer, ReadBuffer);
|
FILL_READ_BUFFER(QueryBuffer, ReadBuffer);
|
||||||
|
@ -100,6 +137,7 @@ START_TEST(MmMapLockedPagesSpecifyCache)
|
||||||
ok(KmtSendBufferToDriver(IOCTL_QUERY_BUFFER, &QueryBuffer, sizeof(QUERY_BUFFER), &Length) == ERROR_SUCCESS, "\n");
|
ok(KmtSendBufferToDriver(IOCTL_QUERY_BUFFER, &QueryBuffer, sizeof(QUERY_BUFFER), &Length) == ERROR_SUCCESS, "\n");
|
||||||
ok_eq_int(QueryBuffer.Length, BufferLength);
|
ok_eq_int(QueryBuffer.Length, BufferLength);
|
||||||
ok(QueryBuffer.Buffer != NULL, "Buffer is NULL\n");
|
ok(QueryBuffer.Buffer != NULL, "Buffer is NULL\n");
|
||||||
|
CHECK_ALLOC(QueryBuffer.Buffer, BufferLength);
|
||||||
|
|
||||||
Length = 0;
|
Length = 0;
|
||||||
FILL_READ_BUFFER(QueryBuffer, ReadBuffer);
|
FILL_READ_BUFFER(QueryBuffer, ReadBuffer);
|
||||||
|
@ -110,6 +148,7 @@ START_TEST(MmMapLockedPagesSpecifyCache)
|
||||||
ok(KmtSendBufferToDriver(IOCTL_QUERY_BUFFER, &QueryBuffer, sizeof(QUERY_BUFFER), &Length) == ERROR_SUCCESS, "\n");
|
ok(KmtSendBufferToDriver(IOCTL_QUERY_BUFFER, &QueryBuffer, sizeof(QUERY_BUFFER), &Length) == ERROR_SUCCESS, "\n");
|
||||||
ok_eq_int(QueryBuffer.Length, BufferLength);
|
ok_eq_int(QueryBuffer.Length, BufferLength);
|
||||||
ok(QueryBuffer.Buffer != NULL, "Buffer is NULL\n");
|
ok(QueryBuffer.Buffer != NULL, "Buffer is NULL\n");
|
||||||
|
CHECK_ALLOC(QueryBuffer.Buffer, BufferLength);
|
||||||
|
|
||||||
Length = 0;
|
Length = 0;
|
||||||
FILL_READ_BUFFER(QueryBuffer, ReadBuffer);
|
FILL_READ_BUFFER(QueryBuffer, ReadBuffer);
|
||||||
|
@ -122,6 +161,7 @@ START_TEST(MmMapLockedPagesSpecifyCache)
|
||||||
ok(KmtSendBufferToDriver(IOCTL_QUERY_BUFFER, &QueryBuffer, sizeof(QUERY_BUFFER), &Length) == ERROR_SUCCESS, "\n");
|
ok(KmtSendBufferToDriver(IOCTL_QUERY_BUFFER, &QueryBuffer, sizeof(QUERY_BUFFER), &Length) == ERROR_SUCCESS, "\n");
|
||||||
ok_eq_int(QueryBuffer.Length, BufferLength);
|
ok_eq_int(QueryBuffer.Length, BufferLength);
|
||||||
ok(QueryBuffer.Buffer != NULL, "Buffer is NULL\n");
|
ok(QueryBuffer.Buffer != NULL, "Buffer is NULL\n");
|
||||||
|
CHECK_ALLOC(QueryBuffer.Buffer, BufferLength);
|
||||||
|
|
||||||
Length = 0;
|
Length = 0;
|
||||||
FILL_READ_BUFFER(QueryBuffer, ReadBuffer);
|
FILL_READ_BUFFER(QueryBuffer, ReadBuffer);
|
||||||
|
@ -132,6 +172,7 @@ START_TEST(MmMapLockedPagesSpecifyCache)
|
||||||
ok(KmtSendBufferToDriver(IOCTL_QUERY_BUFFER, &QueryBuffer, sizeof(QUERY_BUFFER), &Length) == ERROR_SUCCESS, "\n");
|
ok(KmtSendBufferToDriver(IOCTL_QUERY_BUFFER, &QueryBuffer, sizeof(QUERY_BUFFER), &Length) == ERROR_SUCCESS, "\n");
|
||||||
ok_eq_int(QueryBuffer.Length, BufferLength);
|
ok_eq_int(QueryBuffer.Length, BufferLength);
|
||||||
ok(QueryBuffer.Buffer != NULL, "Buffer is NULL\n");
|
ok(QueryBuffer.Buffer != NULL, "Buffer is NULL\n");
|
||||||
|
CHECK_ALLOC(QueryBuffer.Buffer, BufferLength);
|
||||||
|
|
||||||
Length = 0;
|
Length = 0;
|
||||||
FILL_READ_BUFFER(QueryBuffer, ReadBuffer);
|
FILL_READ_BUFFER(QueryBuffer, ReadBuffer);
|
||||||
|
@ -146,6 +187,7 @@ START_TEST(MmMapLockedPagesSpecifyCache)
|
||||||
ok(KmtSendBufferToDriver(IOCTL_QUERY_BUFFER, &QueryBuffer, sizeof(QUERY_BUFFER), &Length) == ERROR_SUCCESS, "\n");
|
ok(KmtSendBufferToDriver(IOCTL_QUERY_BUFFER, &QueryBuffer, sizeof(QUERY_BUFFER), &Length) == ERROR_SUCCESS, "\n");
|
||||||
ok_eq_int(QueryBuffer.Length, BufferLength);
|
ok_eq_int(QueryBuffer.Length, BufferLength);
|
||||||
ok(QueryBuffer.Buffer != NULL, "Buffer is NULL\n");
|
ok(QueryBuffer.Buffer != NULL, "Buffer is NULL\n");
|
||||||
|
CHECK_ALLOC(QueryBuffer.Buffer, BufferLength);
|
||||||
|
|
||||||
Length = 0;
|
Length = 0;
|
||||||
FILL_READ_BUFFER(QueryBuffer, ReadBuffer);
|
FILL_READ_BUFFER(QueryBuffer, ReadBuffer);
|
||||||
|
@ -158,6 +200,7 @@ START_TEST(MmMapLockedPagesSpecifyCache)
|
||||||
ok(KmtSendBufferToDriver(IOCTL_QUERY_BUFFER, &QueryBuffer, sizeof(QUERY_BUFFER), &Length) == ERROR_SUCCESS, "\n");
|
ok(KmtSendBufferToDriver(IOCTL_QUERY_BUFFER, &QueryBuffer, sizeof(QUERY_BUFFER), &Length) == ERROR_SUCCESS, "\n");
|
||||||
ok_eq_int(QueryBuffer.Length, BufferLength);
|
ok_eq_int(QueryBuffer.Length, BufferLength);
|
||||||
ok(QueryBuffer.Buffer != NULL, "Buffer is NULL\n");
|
ok(QueryBuffer.Buffer != NULL, "Buffer is NULL\n");
|
||||||
|
CHECK_ALLOC(QueryBuffer.Buffer, BufferLength);
|
||||||
|
|
||||||
Length = 0;
|
Length = 0;
|
||||||
FILL_READ_BUFFER(QueryBuffer, ReadBuffer);
|
FILL_READ_BUFFER(QueryBuffer, ReadBuffer);
|
||||||
|
|
Loading…
Reference in a new issue