No need now to declare a NTSTATUS ExceptionStatus; variable to be able to use KmtStartSeh() / KmtEndSeh() macros; this is done automagically.
svn path=/trunk/; revision=60320
#define MILLISECOND (1000 * MICROSECOND)
#define SECOND (1000 * MILLISECOND)
+/* See apitests/include/apitest.h */
#define KmtInvalidPointer ((PVOID)0x5555555555555555ULL)
#define KmtStartSeh() \
- ExceptionStatus = STATUS_SUCCESS; \
+{ \
+ NTSTATUS ExceptionStatus = STATUS_SUCCESS; \
_SEH2_TRY \
{
+
#define KmtEndSeh(ExpectedStatus) \
} \
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) \
{ \
ExceptionStatus = _SEH2_GetExceptionCode(); \
- } _SEH2_END; \
- ok_eq_hex(ExceptionStatus, ExpectedStatus)
+ } \
+ _SEH2_END; \
+ ok_eq_hex(ExceptionStatus, (ExpectedStatus)); \
+}
#if defined KMT_DEFINE_TEST_FUNCTIONS
LONG InitialRefCount;
LONG RefCount;
USHORT PoolType;
- NTSTATUS ExceptionStatus;
InitialRefCount = GetRefCount(Process);
EVENT_TYPE Type)
{
NTSTATUS Status;
- NTSTATUS ExceptionStatus;
PKEVENT Event, Event2;
HANDLE EventHandle, EventHandle2;
LONG State;
IN PFILE_OBJECT FileObject2)
{
NTSTATUS Status = STATUS_SUCCESS;
- NTSTATUS ExceptionStatus;
PVOID SectionObject;
LARGE_INTEGER MaximumSize;
ULONG PointerCount1, PointerCount2;
SIZE_T
CheckBufferRead(CONST VOID *Source, CONST VOID *Destination, SIZE_T Length, NTSTATUS ExpectedStatus)
{
- NTSTATUS ExceptionStatus;
SIZE_T Match = 0;
KmtStartSeh()
CheckBufferReadWrite(PVOID Destination, CONST VOID *Source, SIZE_T Length, NTSTATUS ExpectedStatus)
{
//do a little bit of writing/reading to memory
- NTSTATUS ExceptionStatus;
SIZE_T Match = 0;
KmtStartSeh()
SimpleAllocation(VOID)
{
NTSTATUS Status;
- NTSTATUS ExceptionStatus;
PVOID Base = NULL;
SIZE_T RegionSize = DEFAULT_ALLOC_SIZE;
Status = ZwMapViewOfSection(WriteSectionHandle, NtCurrentProcess(), &BaseAddress, 0, 0, &SectionOffset, &ViewSize, ViewUnmap, 0, PAGE_READONLY);
if (!skip(NT_SUCCESS(Status), "Error mapping view with READ priv. Error = %p\n", Status))
{
- NTSTATUS ExceptionStatus;
-
Match = RtlCompareMemory(BaseAddress, TestString, TestStringSize);
ok_eq_size(Match, TestStringSize);
Status = ZwMapViewOfSection(WriteSectionHandle, NtCurrentProcess(), &BaseAddress, 0, 0, &SectionOffset, &ViewSize, ViewUnmap, 0, PAGE_NOACCESS);
if (!skip(NT_SUCCESS(Status), "Error mapping view with PAGE_NOACCESS priv. Error = %p\n", Status))
{
- NTSTATUS ExceptionStatus;
-
KmtStartSeh()
RtlCompareMemory(BaseAddress, TestString, TestStringSize);
KmtEndSeh(STATUS_ACCESS_VIOLATION);
START_TEST(ObReference)
{
NTSTATUS Status;
- NTSTATUS ExceptionStatus;
HANDLE DirectoryHandle = NULL;
OBJECT_ATTRIBUTES ObjectAttributes;
UNICODE_STRING Name, *pName;
Status = ObReferenceObjectByPointer(NULL, 0, NULL, UserMode);
Status = ObReferenceObjectByPointer(NULL, 0, NULL, KernelMode);*/
- ExceptionStatus = STATUS_SUCCESS;
- _SEH2_TRY {
+ KmtStartSeh()
/* TODO: this belongs in an ObHandle test if we ever have one */
/* NtClose must accept everything */
DPRINT("Closing null handle (NtClose)\n");
/* INVALID_KERNEL_HANDLE, 0x7B, 1, 0, 0
Status = ObCloseHandle((HANDLE)123, KernelMode);
Status = ObCloseHandle((HANDLE)(123 | 0x80000000), KernelMode);*/
- } _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) {
- ExceptionStatus = _SEH2_GetExceptionCode();
- } _SEH2_END;
- ok_eq_hex(ExceptionStatus, STATUS_SUCCESS);
+ KmtEndSeh(STATUS_SUCCESS);
if (ObDirectoryObjectType)
{
START_TEST(RtlException)
{
- NTSTATUS ExceptionStatus;
PCHAR Buffer[128];
/* Access a valid pointer - must not trigger SEH */
TestFindCharInUnicodeString(VOID)
{
#ifdef KMT_USER_MODE
- NTSTATUS ExceptionStatus;
NTSTATUS Status;
UNICODE_STRING String = RTL_CONSTANT_STRING(L"I am a string");
UNICODE_STRING Chars = RTL_CONSTANT_STRING(L"a");