Author: tfaber Date: Thu Jun 14 17:48:14 2012 New Revision: 56733
URL: http://svn.reactos.org/svn/reactos?rev=56733&view=rev Log: [KMTESTS] - Centralize frequently used macros
Modified: trunk/rostests/kmtests/include/kmt_test.h trunk/rostests/kmtests/ntos_mm/MmSection.c trunk/rostests/kmtests/rtl/RtlException.c trunk/rostests/kmtests/rtl/RtlUnicodeString.c
Modified: trunk/rostests/kmtests/include/kmt_test.h URL: http://svn.reactos.org/svn/reactos/trunk/rostests/kmtests/include/kmt_test.h... ============================================================================== --- trunk/rostests/kmtests/include/kmt_test.h [iso-8859-1] (original) +++ trunk/rostests/kmtests/include/kmt_test.h [iso-8859-1] Thu Jun 14 17:48:14 2012 @@ -173,6 +173,20 @@ #define MILLISECOND (1000 * MICROSECOND) #define SECOND (1000 * MILLISECOND)
+#define KmtInvalidPointer ((PVOID)0x5555555555555555ULL) + +#define KmtStartSeh() \ + ExceptionStatus = STATUS_SUCCESS; \ + _SEH2_TRY \ + { +#define KmtEndSeh(ExpectedStatus) \ + } \ + _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) \ + { \ + ExceptionStatus = _SEH2_GetExceptionCode(); \ + } _SEH2_END; \ + ok_eq_hex(ExceptionStatus, ExpectedStatus) + #if defined KMT_DEFINE_TEST_FUNCTIONS
#if defined KMT_KERNEL_MODE
Modified: trunk/rostests/kmtests/ntos_mm/MmSection.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/kmtests/ntos_mm/MmSection.... ============================================================================== --- trunk/rostests/kmtests/ntos_mm/MmSection.c [iso-8859-1] (original) +++ trunk/rostests/kmtests/ntos_mm/MmSection.c [iso-8859-1] Thu Jun 14 17:48:14 2012 @@ -6,9 +6,6 @@ */
#include <kmt_test.h> - -#define StartSeh() ExceptionStatus = STATUS_SUCCESS; _SEH2_TRY { -#define EndSeh(ExpectedStatus) } _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) { ExceptionStatus = _SEH2_GetExceptionCode(); } _SEH2_END; ok_eq_hex(ExceptionStatus, ExpectedStatus)
#define CheckObject(Handle, Pointers, Handles) do \ { \ @@ -81,106 +78,105 @@ { NTSTATUS Status = STATUS_SUCCESS; NTSTATUS ExceptionStatus; - const PVOID InvalidPointer = (PVOID)0x5555555555555555ULL; PVOID SectionObject; LARGE_INTEGER MaximumSize; ULONG PointerCount1, PointerCount2;
- StartSeh() + KmtStartSeh() Status = MmCreateSection(NULL, 0, NULL, NULL, 0, SEC_RESERVE, NULL, NULL); - EndSeh(STATUS_SUCCESS); + KmtEndSeh(STATUS_SUCCESS); ok_eq_hex(Status, STATUS_INVALID_PAGE_PROTECTION);
if (!KmtIsCheckedBuild) { /* PAGE_NOACCESS and missing SEC_RESERVE/SEC_COMMIT/SEC_IMAGE assert */ - StartSeh() + KmtStartSeh() Status = MmCreateSection(NULL, 0, NULL, NULL, PAGE_NOACCESS, SEC_RESERVE, NULL, NULL); - EndSeh(STATUS_ACCESS_VIOLATION); - - StartSeh() + KmtEndSeh(STATUS_ACCESS_VIOLATION); + + KmtStartSeh() Status = MmCreateSection(NULL, 0, NULL, NULL, PAGE_NOACCESS, 0, NULL, NULL); - EndSeh(STATUS_ACCESS_VIOLATION); + KmtEndSeh(STATUS_ACCESS_VIOLATION); }
- SectionObject = InvalidPointer; - StartSeh() + SectionObject = KmtInvalidPointer; + KmtStartSeh() Status = MmCreateSection(&SectionObject, 0, NULL, NULL, 0, SEC_RESERVE, NULL, NULL); - EndSeh(STATUS_SUCCESS); + KmtEndSeh(STATUS_SUCCESS); ok_eq_hex(Status, STATUS_INVALID_PAGE_PROTECTION); - ok_eq_pointer(SectionObject, InvalidPointer); - - if (SectionObject && SectionObject != InvalidPointer) - ObDereferenceObject(SectionObject); - - StartSeh() + ok_eq_pointer(SectionObject, KmtInvalidPointer); + + if (SectionObject && SectionObject != KmtInvalidPointer) + ObDereferenceObject(SectionObject); + + KmtStartSeh() Status = MmCreateSection(NULL, 0, NULL, NULL, PAGE_READONLY, SEC_RESERVE, NULL, NULL); - EndSeh(STATUS_ACCESS_VIOLATION); - - SectionObject = InvalidPointer; - StartSeh() + KmtEndSeh(STATUS_ACCESS_VIOLATION); + + SectionObject = KmtInvalidPointer; + KmtStartSeh() Status = MmCreateSection(&SectionObject, 0, NULL, NULL, PAGE_READONLY, SEC_RESERVE, NULL, NULL); - EndSeh(STATUS_ACCESS_VIOLATION); - ok_eq_pointer(SectionObject, InvalidPointer); - - if (SectionObject && SectionObject != InvalidPointer) - ObDereferenceObject(SectionObject); - - SectionObject = InvalidPointer; + KmtEndSeh(STATUS_ACCESS_VIOLATION); + ok_eq_pointer(SectionObject, KmtInvalidPointer); + + if (SectionObject && SectionObject != KmtInvalidPointer) + ObDereferenceObject(SectionObject); + + SectionObject = KmtInvalidPointer; MaximumSize.QuadPart = 0; - StartSeh() + KmtStartSeh() Status = MmCreateSection(&SectionObject, 0, NULL, &MaximumSize, PAGE_READONLY, SEC_IMAGE, NULL, NULL); - EndSeh(STATUS_SUCCESS); + KmtEndSeh(STATUS_SUCCESS); ok_eq_hex(Status, STATUS_INVALID_FILE_FOR_SECTION); ok_eq_longlong(MaximumSize.QuadPart, 0LL); - ok_eq_pointer(SectionObject, InvalidPointer); - - if (SectionObject && SectionObject != InvalidPointer) + ok_eq_pointer(SectionObject, KmtInvalidPointer); + + if (SectionObject && SectionObject != KmtInvalidPointer) ObDereferenceObject(SectionObject);
MaximumSize.QuadPart = 0; - StartSeh() + KmtStartSeh() Status = MmCreateSection(NULL, 0, NULL, &MaximumSize, PAGE_READONLY, SEC_RESERVE, NULL, NULL); - EndSeh(STATUS_SUCCESS); + KmtEndSeh(STATUS_SUCCESS); ok_eq_hex(Status, STATUS_INVALID_PARAMETER_4); ok_eq_longlong(MaximumSize.QuadPart, 0LL);
- if (SectionObject && SectionObject != InvalidPointer) + if (SectionObject && SectionObject != KmtInvalidPointer) ObDereferenceObject(SectionObject);
MaximumSize.QuadPart = 1; - StartSeh() + KmtStartSeh() Status = MmCreateSection(NULL, 0, NULL, &MaximumSize, PAGE_READONLY, SEC_RESERVE, NULL, NULL); - EndSeh(STATUS_ACCESS_VIOLATION); + KmtEndSeh(STATUS_ACCESS_VIOLATION); ok_eq_longlong(MaximumSize.QuadPart, 1LL);
- if (SectionObject && SectionObject != InvalidPointer) - ObDereferenceObject(SectionObject); - - SectionObject = InvalidPointer; + if (SectionObject && SectionObject != KmtInvalidPointer) + ObDereferenceObject(SectionObject); + + SectionObject = KmtInvalidPointer; MaximumSize.QuadPart = 0; - StartSeh() + KmtStartSeh() Status = MmCreateSection(&SectionObject, 0, NULL, &MaximumSize, PAGE_READONLY, SEC_RESERVE, NULL, NULL); - EndSeh(STATUS_SUCCESS); + KmtEndSeh(STATUS_SUCCESS); ok_eq_hex(Status, STATUS_INVALID_PARAMETER_4); ok_eq_longlong(MaximumSize.QuadPart, 0LL); - ok_eq_pointer(SectionObject, InvalidPointer); - - if (SectionObject && SectionObject != InvalidPointer) + ok_eq_pointer(SectionObject, KmtInvalidPointer); + + if (SectionObject && SectionObject != KmtInvalidPointer) ObDereferenceObject(SectionObject);
/* page file section */ - SectionObject = InvalidPointer; + SectionObject = KmtInvalidPointer; MaximumSize.QuadPart = 1; - StartSeh() + KmtStartSeh() Status = MmCreateSection(&SectionObject, 0, NULL, &MaximumSize, PAGE_READONLY, SEC_RESERVE, NULL, NULL); - EndSeh(STATUS_SUCCESS); + KmtEndSeh(STATUS_SUCCESS); ok_eq_hex(Status, STATUS_SUCCESS); ok_eq_longlong(MaximumSize.QuadPart, 1LL); - ok(SectionObject != InvalidPointer, "Section object pointer untouched\n"); + ok(SectionObject != KmtInvalidPointer, "Section object pointer untouched\n"); ok(SectionObject != NULL, "Section object pointer NULL\n");
- if (SectionObject && SectionObject != InvalidPointer) + if (SectionObject && SectionObject != KmtInvalidPointer) ObDereferenceObject(SectionObject);
if (!skip(FileHandle1 != NULL && FileObject1 != NULL && @@ -190,196 +186,196 @@ PointerCount2 = 3; /* image section */ CheckObject(FileHandle2, PointerCount2, 1L); - SectionObject = InvalidPointer; - MaximumSize.QuadPart = 1; - StartSeh() + SectionObject = KmtInvalidPointer; + MaximumSize.QuadPart = 1; + KmtStartSeh() Status = MmCreateSection(&SectionObject, 0, NULL, &MaximumSize, PAGE_READONLY, SEC_IMAGE, FileHandle2, NULL); - EndSeh(STATUS_SUCCESS); - ok_eq_hex(Status, STATUS_SUCCESS); - ok_eq_longlong(MaximumSize.QuadPart, 1LL); - ok(SectionObject != InvalidPointer, "Section object pointer untouched\n"); + KmtEndSeh(STATUS_SUCCESS); + ok_eq_hex(Status, STATUS_SUCCESS); + ok_eq_longlong(MaximumSize.QuadPart, 1LL); + ok(SectionObject != KmtInvalidPointer, "Section object pointer untouched\n"); ok(SectionObject != NULL, "Section object pointer NULL\n"); CheckObject(FileHandle2, PointerCount2, 1L); CheckSection(SectionObject, SEC_IMAGE); TestMapView(SectionObject, FALSE, TRUE);
- if (SectionObject && SectionObject != InvalidPointer) - ObDereferenceObject(SectionObject); - - CheckObject(FileHandle2, PointerCount2, 1L); - SectionObject = InvalidPointer; - MaximumSize.QuadPart = 1; - StartSeh() + if (SectionObject && SectionObject != KmtInvalidPointer) + ObDereferenceObject(SectionObject); + + CheckObject(FileHandle2, PointerCount2, 1L); + SectionObject = KmtInvalidPointer; + MaximumSize.QuadPart = 1; + KmtStartSeh() Status = MmCreateSection(&SectionObject, 0, NULL, &MaximumSize, PAGE_READONLY, SEC_IMAGE, NULL, FileObject2); - EndSeh(STATUS_SUCCESS); - ok_eq_hex(Status, STATUS_SUCCESS); - ok_eq_longlong(MaximumSize.QuadPart, 1LL); - ok(SectionObject != InvalidPointer, "Section object pointer untouched\n"); + KmtEndSeh(STATUS_SUCCESS); + ok_eq_hex(Status, STATUS_SUCCESS); + ok_eq_longlong(MaximumSize.QuadPart, 1LL); + ok(SectionObject != KmtInvalidPointer, "Section object pointer untouched\n"); ok(SectionObject != NULL, "Section object pointer NULL\n"); ++PointerCount2; CheckObject(FileHandle2, PointerCount2, 1L); CheckSection(SectionObject, 0); TestMapView(SectionObject, TRUE, TRUE);
- if (SectionObject && SectionObject != InvalidPointer) + if (SectionObject && SectionObject != KmtInvalidPointer) ObDereferenceObject(SectionObject); //--PointerCount2; // ????
CheckObject(FileHandle2, PointerCount2, 1L); - SectionObject = InvalidPointer; - MaximumSize.QuadPart = 1; - StartSeh() + SectionObject = KmtInvalidPointer; + MaximumSize.QuadPart = 1; + KmtStartSeh() Status = MmCreateSection(&SectionObject, 0, NULL, &MaximumSize, PAGE_READONLY, SEC_IMAGE, FileHandle2, FileObject2); - EndSeh(STATUS_SUCCESS); - ok_eq_hex(Status, STATUS_SUCCESS); - ok_eq_longlong(MaximumSize.QuadPart, 1LL); - ok(SectionObject != InvalidPointer, "Section object pointer untouched\n"); + KmtEndSeh(STATUS_SUCCESS); + ok_eq_hex(Status, STATUS_SUCCESS); + ok_eq_longlong(MaximumSize.QuadPart, 1LL); + ok(SectionObject != KmtInvalidPointer, "Section object pointer untouched\n"); ok(SectionObject != NULL, "Section object pointer NULL\n"); CheckObject(FileHandle2, PointerCount2, 1L); CheckSection(SectionObject, 0); TestMapView(SectionObject, TRUE, TRUE);
- if (SectionObject && SectionObject != InvalidPointer) + if (SectionObject && SectionObject != KmtInvalidPointer) ObDereferenceObject(SectionObject);
/* image section with inappropriate file */ CheckObject(FileHandle1, PointerCount1, 1L); - SectionObject = InvalidPointer; - MaximumSize.QuadPart = 1; - StartSeh() + SectionObject = KmtInvalidPointer; + MaximumSize.QuadPart = 1; + KmtStartSeh() Status = MmCreateSection(&SectionObject, 0, NULL, &MaximumSize, PAGE_READONLY, SEC_IMAGE, FileHandle1, NULL); - EndSeh(STATUS_SUCCESS); + KmtEndSeh(STATUS_SUCCESS); ok_eq_hex(Status, STATUS_INVALID_IMAGE_NOT_MZ); ok_eq_longlong(MaximumSize.QuadPart, 1LL); - ok_eq_pointer(SectionObject, InvalidPointer); - CheckObject(FileHandle1, PointerCount1, 1L); - - if (SectionObject && SectionObject != InvalidPointer) - ObDereferenceObject(SectionObject); - - CheckObject(FileHandle1, PointerCount1, 1L); - SectionObject = InvalidPointer; - MaximumSize.QuadPart = 1; - StartSeh() + ok_eq_pointer(SectionObject, KmtInvalidPointer); + CheckObject(FileHandle1, PointerCount1, 1L); + + if (SectionObject && SectionObject != KmtInvalidPointer) + ObDereferenceObject(SectionObject); + + CheckObject(FileHandle1, PointerCount1, 1L); + SectionObject = KmtInvalidPointer; + MaximumSize.QuadPart = 1; + KmtStartSeh() Status = MmCreateSection(&SectionObject, 0, NULL, &MaximumSize, PAGE_READONLY, SEC_IMAGE, NULL, FileObject1); - EndSeh(STATUS_SUCCESS); - ok_eq_hex(Status, STATUS_SUCCESS); - ok_eq_longlong(MaximumSize.QuadPart, 1LL); - ok(SectionObject != InvalidPointer, "Section object pointer untouched\n"); + KmtEndSeh(STATUS_SUCCESS); + ok_eq_hex(Status, STATUS_SUCCESS); + ok_eq_longlong(MaximumSize.QuadPart, 1LL); + ok(SectionObject != KmtInvalidPointer, "Section object pointer untouched\n"); ok(SectionObject != NULL, "Section object pointer NULL\n"); ++PointerCount1; CheckObject(FileHandle1, PointerCount1, 1L); CheckSection(SectionObject, 0); TestMapView(SectionObject, TRUE, FALSE);
- if (SectionObject && SectionObject != InvalidPointer) + if (SectionObject && SectionObject != KmtInvalidPointer) ObDereferenceObject(SectionObject); //--PointerCount1; // ????
CheckObject(FileHandle1, PointerCount1, 1L); - SectionObject = InvalidPointer; - MaximumSize.QuadPart = 1; - StartSeh() + SectionObject = KmtInvalidPointer; + MaximumSize.QuadPart = 1; + KmtStartSeh() Status = MmCreateSection(&SectionObject, 0, NULL, &MaximumSize, PAGE_READONLY, SEC_IMAGE, FileHandle1, FileObject1); - EndSeh(STATUS_SUCCESS); - ok_eq_hex(Status, STATUS_SUCCESS); - ok_eq_longlong(MaximumSize.QuadPart, 1LL); - ok(SectionObject != InvalidPointer, "Section object pointer untouched\n"); - ok(SectionObject != NULL, "Section object pointer NULL\n"); - CheckObject(FileHandle1, PointerCount1, 1L); - CheckSection(SectionObject, 0); - TestMapView(SectionObject, TRUE, FALSE); - - if (SectionObject && SectionObject != InvalidPointer) + KmtEndSeh(STATUS_SUCCESS); + ok_eq_hex(Status, STATUS_SUCCESS); + ok_eq_longlong(MaximumSize.QuadPart, 1LL); + ok(SectionObject != KmtInvalidPointer, "Section object pointer untouched\n"); + ok(SectionObject != NULL, "Section object pointer NULL\n"); + CheckObject(FileHandle1, PointerCount1, 1L); + CheckSection(SectionObject, 0); + TestMapView(SectionObject, TRUE, FALSE); + + if (SectionObject && SectionObject != KmtInvalidPointer) ObDereferenceObject(SectionObject);
/* image section with two different files */ CheckObject(FileHandle1, PointerCount1, 1L); - SectionObject = InvalidPointer; - MaximumSize.QuadPart = 1; - StartSeh() + SectionObject = KmtInvalidPointer; + MaximumSize.QuadPart = 1; + KmtStartSeh() Status = MmCreateSection(&SectionObject, 0, NULL, &MaximumSize, PAGE_READONLY, SEC_IMAGE, FileHandle1, FileObject2); - EndSeh(STATUS_SUCCESS); - ok_eq_hex(Status, STATUS_SUCCESS); - ok_eq_longlong(MaximumSize.QuadPart, 1LL); - ok(SectionObject != InvalidPointer, "Section object pointer untouched\n"); + KmtEndSeh(STATUS_SUCCESS); + ok_eq_hex(Status, STATUS_SUCCESS); + ok_eq_longlong(MaximumSize.QuadPart, 1LL); + ok(SectionObject != KmtInvalidPointer, "Section object pointer untouched\n"); ok(SectionObject != NULL, "Section object pointer NULL\n"); CheckObject(FileHandle1, PointerCount1, 1L); CheckObject(FileHandle2, PointerCount2, 1L); CheckSection(SectionObject, 0); TestMapView(SectionObject, TRUE, TRUE);
- if (SectionObject && SectionObject != InvalidPointer) - ObDereferenceObject(SectionObject); - - CheckObject(FileHandle1, PointerCount1, 1L); - SectionObject = InvalidPointer; - MaximumSize.QuadPart = 1; - StartSeh() + if (SectionObject && SectionObject != KmtInvalidPointer) + ObDereferenceObject(SectionObject); + + CheckObject(FileHandle1, PointerCount1, 1L); + SectionObject = KmtInvalidPointer; + MaximumSize.QuadPart = 1; + KmtStartSeh() Status = MmCreateSection(&SectionObject, 0, NULL, &MaximumSize, PAGE_READONLY, SEC_IMAGE, FileHandle2, FileObject1); - EndSeh(STATUS_SUCCESS); - ok_eq_hex(Status, STATUS_SUCCESS); - ok_eq_longlong(MaximumSize.QuadPart, 1LL); - ok(SectionObject != InvalidPointer, "Section object pointer untouched\n"); - ok(SectionObject != NULL, "Section object pointer NULL\n"); - CheckObject(FileHandle1, PointerCount1, 1L); - CheckObject(FileHandle2, PointerCount2, 1L); - CheckSection(SectionObject, 0); - TestMapView(SectionObject, TRUE, FALSE); - - if (SectionObject && SectionObject != InvalidPointer) + KmtEndSeh(STATUS_SUCCESS); + ok_eq_hex(Status, STATUS_SUCCESS); + ok_eq_longlong(MaximumSize.QuadPart, 1LL); + ok(SectionObject != KmtInvalidPointer, "Section object pointer untouched\n"); + ok(SectionObject != NULL, "Section object pointer NULL\n"); + CheckObject(FileHandle1, PointerCount1, 1L); + CheckObject(FileHandle2, PointerCount2, 1L); + CheckSection(SectionObject, 0); + TestMapView(SectionObject, TRUE, FALSE); + + if (SectionObject && SectionObject != KmtInvalidPointer) ObDereferenceObject(SectionObject);
/* data file section */ CheckObject(FileHandle1, PointerCount1, 1L); - SectionObject = InvalidPointer; - MaximumSize.QuadPart = 1; - StartSeh() + SectionObject = KmtInvalidPointer; + MaximumSize.QuadPart = 1; + KmtStartSeh() Status = MmCreateSection(&SectionObject, 0, NULL, &MaximumSize, PAGE_READONLY, SEC_RESERVE, FileHandle1, NULL); - EndSeh(STATUS_SUCCESS); - ok_eq_hex(Status, STATUS_SUCCESS); - ok_eq_longlong(MaximumSize.QuadPart, 1LL); - ok(SectionObject != InvalidPointer, "Section object pointer untouched\n"); - ok(SectionObject != NULL, "Section object pointer NULL\n"); - CheckObject(FileHandle1, PointerCount1, 1L); - CheckSection(SectionObject, 0); - TestMapView(SectionObject, TRUE, FALSE); - - if (SectionObject && SectionObject != InvalidPointer) - ObDereferenceObject(SectionObject); - - CheckObject(FileHandle1, PointerCount1, 1L); - SectionObject = InvalidPointer; - MaximumSize.QuadPart = 1; - StartSeh() + KmtEndSeh(STATUS_SUCCESS); + ok_eq_hex(Status, STATUS_SUCCESS); + ok_eq_longlong(MaximumSize.QuadPart, 1LL); + ok(SectionObject != KmtInvalidPointer, "Section object pointer untouched\n"); + ok(SectionObject != NULL, "Section object pointer NULL\n"); + CheckObject(FileHandle1, PointerCount1, 1L); + CheckSection(SectionObject, 0); + TestMapView(SectionObject, TRUE, FALSE); + + if (SectionObject && SectionObject != KmtInvalidPointer) + ObDereferenceObject(SectionObject); + + CheckObject(FileHandle1, PointerCount1, 1L); + SectionObject = KmtInvalidPointer; + MaximumSize.QuadPart = 1; + KmtStartSeh() Status = MmCreateSection(&SectionObject, 0, NULL, &MaximumSize, PAGE_READONLY, SEC_RESERVE, NULL, FileObject1); - EndSeh(STATUS_SUCCESS); - ok_eq_hex(Status, STATUS_SUCCESS); - ok_eq_longlong(MaximumSize.QuadPart, 1LL); - ok(SectionObject != InvalidPointer, "Section object pointer untouched\n"); - ok(SectionObject != NULL, "Section object pointer NULL\n"); - CheckObject(FileHandle1, PointerCount1, 1L); - CheckSection(SectionObject, 0); - TestMapView(SectionObject, TRUE, FALSE); - - if (SectionObject && SectionObject != InvalidPointer) - ObDereferenceObject(SectionObject); - - CheckObject(FileHandle1, PointerCount1, 1L); - SectionObject = InvalidPointer; - MaximumSize.QuadPart = 1; - StartSeh() + KmtEndSeh(STATUS_SUCCESS); + ok_eq_hex(Status, STATUS_SUCCESS); + ok_eq_longlong(MaximumSize.QuadPart, 1LL); + ok(SectionObject != KmtInvalidPointer, "Section object pointer untouched\n"); + ok(SectionObject != NULL, "Section object pointer NULL\n"); + CheckObject(FileHandle1, PointerCount1, 1L); + CheckSection(SectionObject, 0); + TestMapView(SectionObject, TRUE, FALSE); + + if (SectionObject && SectionObject != KmtInvalidPointer) + ObDereferenceObject(SectionObject); + + CheckObject(FileHandle1, PointerCount1, 1L); + SectionObject = KmtInvalidPointer; + MaximumSize.QuadPart = 1; + KmtStartSeh() Status = MmCreateSection(&SectionObject, 0, NULL, &MaximumSize, PAGE_READONLY, SEC_RESERVE, FileHandle1, FileObject1); - EndSeh(STATUS_SUCCESS); - ok_eq_hex(Status, STATUS_SUCCESS); - ok_eq_longlong(MaximumSize.QuadPart, 1LL); - ok(SectionObject != InvalidPointer, "Section object pointer untouched\n"); - ok(SectionObject != NULL, "Section object pointer NULL\n"); - CheckObject(FileHandle1, PointerCount1, 1L); - CheckSection(SectionObject, 0); - TestMapView(SectionObject, TRUE, FALSE); - - if (SectionObject && SectionObject != InvalidPointer) + KmtEndSeh(STATUS_SUCCESS); + ok_eq_hex(Status, STATUS_SUCCESS); + ok_eq_longlong(MaximumSize.QuadPart, 1LL); + ok(SectionObject != KmtInvalidPointer, "Section object pointer untouched\n"); + ok(SectionObject != NULL, "Section object pointer NULL\n"); + CheckObject(FileHandle1, PointerCount1, 1L); + CheckSection(SectionObject, 0); + TestMapView(SectionObject, TRUE, FALSE); + + if (SectionObject && SectionObject != KmtInvalidPointer) ObDereferenceObject(SectionObject);
CheckObject(FileHandle1, PointerCount1, 1L);
Modified: trunk/rostests/kmtests/rtl/RtlException.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/kmtests/rtl/RtlException.c... ============================================================================== --- trunk/rostests/kmtests/rtl/RtlException.c [iso-8859-1] (original) +++ trunk/rostests/kmtests/rtl/RtlException.c [iso-8859-1] Thu Jun 14 17:48:14 2012 @@ -7,9 +7,6 @@
#include <kmt_test.h>
-#define StartSeh() ExceptionStatus = STATUS_SUCCESS; _SEH2_TRY { -#define EndSeh(ExpectedStatus) } _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) { ExceptionStatus = _SEH2_GetExceptionCode(); } _SEH2_END; ok_eq_hex(ExceptionStatus, ExpectedStatus) - START_TEST(RtlException) { NTSTATUS ExceptionStatus; @@ -17,38 +14,38 @@ CHAR Value;
/* Access a valid pointer - must not trigger SEH */ - StartSeh() + KmtStartSeh() RtlFillMemory(Buffer, sizeof(Buffer), 0x12); - EndSeh(STATUS_SUCCESS); + KmtEndSeh(STATUS_SUCCESS);
/* Read from a NULL pointer - must cause an access violation */ - StartSeh() + KmtStartSeh() Value = *(volatile CHAR *)NULL; - EndSeh(STATUS_ACCESS_VIOLATION); + KmtEndSeh(STATUS_ACCESS_VIOLATION);
/* Write to a NULL pointer - must cause an access violation */ - StartSeh() + KmtStartSeh() *(volatile CHAR *)NULL = 5; - EndSeh(STATUS_ACCESS_VIOLATION); + KmtEndSeh(STATUS_ACCESS_VIOLATION);
/* TODO: Find where MmBadPointer is defined - gives an unresolved external */ #if 0 //def KMT_KERNEL_MODE /* Read from MmBadPointer - must cause an access violation */ - StartSeh() + KmtStartSeh() Value = *(volatile CHAR *)MmBadPointer; - EndSeh(STATUS_ACCESS_VIOLATION); + KmtEndSeh(STATUS_ACCESS_VIOLATION);
/* Write to MmBadPointer - must cause an access violation */ - StartSeh() + KmtStartSeh() *(volatile CHAR *)MmBadPointer = 5; - EndSeh(STATUS_ACCESS_VIOLATION); + KmtEndSeh(STATUS_ACCESS_VIOLATION); #endif
/* We cannot test this in kernel mode easily - the stack is just "somewhere" * in system space, and there's no guard page below it */ #ifdef KMT_USER_MODE /* Overflow the stack - must cause a special exception */ - StartSeh() + KmtStartSeh() PCHAR Pointer;
while (1) @@ -56,6 +53,6 @@ Pointer = _alloca(1024); *Pointer = 5; } - EndSeh(STATUS_STACK_OVERFLOW); + KmtEndSeh(STATUS_STACK_OVERFLOW); #endif }
Modified: trunk/rostests/kmtests/rtl/RtlUnicodeString.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/kmtests/rtl/RtlUnicodeStri... ============================================================================== --- trunk/rostests/kmtests/rtl/RtlUnicodeString.c [iso-8859-1] (original) +++ trunk/rostests/kmtests/rtl/RtlUnicodeString.c [iso-8859-1] Thu Jun 14 17:48:14 2012 @@ -7,9 +7,6 @@
#define KMT_EMULATE_KERNEL #include <kmt_test.h> - -#define StartSeh() ExceptionStatus = STATUS_SUCCESS; _SEH2_TRY { -#define EndSeh(ExpectedStatus) } _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) { ExceptionStatus = _SEH2_GetExceptionCode(); } _SEH2_END; ok_eq_hex(ExceptionStatus, ExpectedStatus)
static VOID @@ -116,32 +113,32 @@
/* NULL for SearchString */ Position = 123; - StartSeh() + KmtStartSeh() Status = RtlFindCharInUnicodeString(0, NULL, &String, &Position); - EndSeh(STATUS_ACCESS_VIOLATION); + KmtEndSeh(STATUS_ACCESS_VIOLATION); ok_eq_uint(Position, 0);
/* NULL for SearchString and invalid flags */ Position = 123; - StartSeh() + KmtStartSeh() Status = RtlFindCharInUnicodeString(8, NULL, &String, &Position); - EndSeh(STATUS_SUCCESS); + KmtEndSeh(STATUS_SUCCESS); ok_eq_hex(Status, STATUS_INVALID_PARAMETER); ok_eq_uint(Position, 0); ok_eq_uint(Position, 0);
/* NULL for SearchString with zero-length MatchString */ Position = 123; - StartSeh() + KmtStartSeh() Status = RtlFindCharInUnicodeString(0, NULL, &ZeroLengthString, &Position); - EndSeh(STATUS_ACCESS_VIOLATION); + KmtEndSeh(STATUS_ACCESS_VIOLATION); ok_eq_uint(Position, 0);
/* NULL for MatchString */ Position = 123; - StartSeh() + KmtStartSeh() Status = RtlFindCharInUnicodeString(0, &String, NULL, &Position); - EndSeh(STATUS_ACCESS_VIOLATION); + KmtEndSeh(STATUS_ACCESS_VIOLATION); ok_eq_uint(Position, 0);
/* This crashes in Windows, but not in ROS. I see no reason to add @@ -149,30 +146,30 @@ #if 0 /* NULL for MatchString with zero-length SearchString */ Position = 123; - StartSeh() + KmtStartSeh() Status = RtlFindCharInUnicodeString(0, &ZeroLengthString, NULL, &Position); - EndSeh(STATUS_ACCESS_VIOLATION); + KmtEndSeh(STATUS_ACCESS_VIOLATION); ok_eq_uint(Position, 0); #endif
/* NULL for MatchString and invalid flags */ Position = 123; - StartSeh() + KmtStartSeh() Status = RtlFindCharInUnicodeString(8, &String, NULL, &Position); - EndSeh(STATUS_SUCCESS); + KmtEndSeh(STATUS_SUCCESS); ok_eq_hex(Status, STATUS_INVALID_PARAMETER); ok_eq_uint(Position, 0);
/* NULL for Position */ - StartSeh() + KmtStartSeh() Status = RtlFindCharInUnicodeString(0, &String, &String, NULL); - EndSeh(STATUS_SUCCESS); + KmtEndSeh(STATUS_SUCCESS); ok_eq_hex(Status, STATUS_INVALID_PARAMETER);
/* NULL for all three */ - StartSeh() + KmtStartSeh() Status = RtlFindCharInUnicodeString(0, NULL, NULL, NULL); - EndSeh(STATUS_SUCCESS); + KmtEndSeh(STATUS_SUCCESS); ok_eq_hex(Status, STATUS_INVALID_PARAMETER); #endif }