+#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); \
+}
+