diff --git a/rostests/kmtests/include/kmt_test.h b/rostests/kmtests/include/kmt_test.h index 7ed869a90f4..a756b920afa 100644 --- a/rostests/kmtests/include/kmt_test.h +++ b/rostests/kmtests/include/kmt_test.h @@ -173,6 +173,20 @@ VOID KmtFreeGuarded(PVOID Pointer); #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 diff --git a/rostests/kmtests/ntos_mm/MmSection.c b/rostests/kmtests/ntos_mm/MmSection.c index 7b3cf830001..128320797fa 100644 --- a/rostests/kmtests/ntos_mm/MmSection.c +++ b/rostests/kmtests/ntos_mm/MmSection.c @@ -7,9 +7,6 @@ #include -#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 \ { \ PUBLIC_OBJECT_BASIC_INFORMATION ObjectInfo; \ @@ -81,106 +78,105 @@ TestCreateSection( { 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); + KmtEndSeh(STATUS_ACCESS_VIOLATION); - StartSeh() + 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); + ok_eq_pointer(SectionObject, KmtInvalidPointer); - if (SectionObject && SectionObject != InvalidPointer) + if (SectionObject && SectionObject != KmtInvalidPointer) ObDereferenceObject(SectionObject); - StartSeh() + KmtStartSeh() Status = MmCreateSection(NULL, 0, NULL, NULL, PAGE_READONLY, SEC_RESERVE, NULL, NULL); - EndSeh(STATUS_ACCESS_VIOLATION); + KmtEndSeh(STATUS_ACCESS_VIOLATION); - SectionObject = InvalidPointer; - StartSeh() + SectionObject = KmtInvalidPointer; + KmtStartSeh() Status = MmCreateSection(&SectionObject, 0, NULL, NULL, PAGE_READONLY, SEC_RESERVE, NULL, NULL); - EndSeh(STATUS_ACCESS_VIOLATION); - ok_eq_pointer(SectionObject, InvalidPointer); + KmtEndSeh(STATUS_ACCESS_VIOLATION); + ok_eq_pointer(SectionObject, KmtInvalidPointer); - if (SectionObject && SectionObject != InvalidPointer) + if (SectionObject && SectionObject != KmtInvalidPointer) ObDereferenceObject(SectionObject); - SectionObject = InvalidPointer; + 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); + ok_eq_pointer(SectionObject, KmtInvalidPointer); - if (SectionObject && SectionObject != InvalidPointer) + 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) + if (SectionObject && SectionObject != KmtInvalidPointer) ObDereferenceObject(SectionObject); - SectionObject = InvalidPointer; + 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); + ok_eq_pointer(SectionObject, KmtInvalidPointer); - if (SectionObject && SectionObject != InvalidPointer) + 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 @@ TestCreateSection( PointerCount2 = 3; /* image section */ CheckObject(FileHandle2, PointerCount2, 1L); - SectionObject = InvalidPointer; + SectionObject = KmtInvalidPointer; MaximumSize.QuadPart = 1; - StartSeh() + KmtStartSeh() Status = MmCreateSection(&SectionObject, 0, NULL, &MaximumSize, PAGE_READONLY, SEC_IMAGE, FileHandle2, 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"); CheckObject(FileHandle2, PointerCount2, 1L); CheckSection(SectionObject, SEC_IMAGE); TestMapView(SectionObject, FALSE, TRUE); - if (SectionObject && SectionObject != InvalidPointer) + if (SectionObject && SectionObject != KmtInvalidPointer) ObDereferenceObject(SectionObject); CheckObject(FileHandle2, PointerCount2, 1L); - SectionObject = InvalidPointer; + SectionObject = KmtInvalidPointer; MaximumSize.QuadPart = 1; - StartSeh() + KmtStartSeh() Status = MmCreateSection(&SectionObject, 0, NULL, &MaximumSize, PAGE_READONLY, SEC_IMAGE, NULL, FileObject2); - 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"); ++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; + SectionObject = KmtInvalidPointer; MaximumSize.QuadPart = 1; - StartSeh() + KmtStartSeh() Status = MmCreateSection(&SectionObject, 0, NULL, &MaximumSize, PAGE_READONLY, SEC_IMAGE, FileHandle2, FileObject2); - 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"); 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; + SectionObject = KmtInvalidPointer; MaximumSize.QuadPart = 1; - StartSeh() + 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); + ok_eq_pointer(SectionObject, KmtInvalidPointer); CheckObject(FileHandle1, PointerCount1, 1L); - if (SectionObject && SectionObject != InvalidPointer) + if (SectionObject && SectionObject != KmtInvalidPointer) ObDereferenceObject(SectionObject); CheckObject(FileHandle1, PointerCount1, 1L); - SectionObject = InvalidPointer; + SectionObject = KmtInvalidPointer; MaximumSize.QuadPart = 1; - StartSeh() + KmtStartSeh() Status = MmCreateSection(&SectionObject, 0, NULL, &MaximumSize, PAGE_READONLY, SEC_IMAGE, NULL, FileObject1); - 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"); ++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; + SectionObject = KmtInvalidPointer; MaximumSize.QuadPart = 1; - StartSeh() + KmtStartSeh() Status = MmCreateSection(&SectionObject, 0, NULL, &MaximumSize, PAGE_READONLY, SEC_IMAGE, FileHandle1, FileObject1); - 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"); CheckObject(FileHandle1, PointerCount1, 1L); CheckSection(SectionObject, 0); TestMapView(SectionObject, TRUE, FALSE); - if (SectionObject && SectionObject != InvalidPointer) + if (SectionObject && SectionObject != KmtInvalidPointer) ObDereferenceObject(SectionObject); /* image section with two different files */ CheckObject(FileHandle1, PointerCount1, 1L); - SectionObject = InvalidPointer; + SectionObject = KmtInvalidPointer; MaximumSize.QuadPart = 1; - StartSeh() + KmtStartSeh() Status = MmCreateSection(&SectionObject, 0, NULL, &MaximumSize, PAGE_READONLY, SEC_IMAGE, FileHandle1, FileObject2); - 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"); CheckObject(FileHandle1, PointerCount1, 1L); CheckObject(FileHandle2, PointerCount2, 1L); CheckSection(SectionObject, 0); TestMapView(SectionObject, TRUE, TRUE); - if (SectionObject && SectionObject != InvalidPointer) + if (SectionObject && SectionObject != KmtInvalidPointer) ObDereferenceObject(SectionObject); CheckObject(FileHandle1, PointerCount1, 1L); - SectionObject = InvalidPointer; + SectionObject = KmtInvalidPointer; MaximumSize.QuadPart = 1; - StartSeh() + KmtStartSeh() Status = MmCreateSection(&SectionObject, 0, NULL, &MaximumSize, PAGE_READONLY, SEC_IMAGE, FileHandle2, FileObject1); - 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"); CheckObject(FileHandle1, PointerCount1, 1L); CheckObject(FileHandle2, PointerCount2, 1L); CheckSection(SectionObject, 0); TestMapView(SectionObject, TRUE, FALSE); - if (SectionObject && SectionObject != InvalidPointer) + if (SectionObject && SectionObject != KmtInvalidPointer) ObDereferenceObject(SectionObject); /* data file section */ CheckObject(FileHandle1, PointerCount1, 1L); - SectionObject = InvalidPointer; + SectionObject = KmtInvalidPointer; MaximumSize.QuadPart = 1; - StartSeh() + KmtStartSeh() Status = MmCreateSection(&SectionObject, 0, NULL, &MaximumSize, PAGE_READONLY, SEC_RESERVE, FileHandle1, 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"); CheckObject(FileHandle1, PointerCount1, 1L); CheckSection(SectionObject, 0); TestMapView(SectionObject, TRUE, FALSE); - if (SectionObject && SectionObject != InvalidPointer) + if (SectionObject && SectionObject != KmtInvalidPointer) ObDereferenceObject(SectionObject); CheckObject(FileHandle1, PointerCount1, 1L); - SectionObject = InvalidPointer; + SectionObject = KmtInvalidPointer; MaximumSize.QuadPart = 1; - StartSeh() + KmtStartSeh() Status = MmCreateSection(&SectionObject, 0, NULL, &MaximumSize, PAGE_READONLY, SEC_RESERVE, NULL, FileObject1); - 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"); CheckObject(FileHandle1, PointerCount1, 1L); CheckSection(SectionObject, 0); TestMapView(SectionObject, TRUE, FALSE); - if (SectionObject && SectionObject != InvalidPointer) + if (SectionObject && SectionObject != KmtInvalidPointer) ObDereferenceObject(SectionObject); CheckObject(FileHandle1, PointerCount1, 1L); - SectionObject = InvalidPointer; + SectionObject = KmtInvalidPointer; MaximumSize.QuadPart = 1; - StartSeh() + KmtStartSeh() Status = MmCreateSection(&SectionObject, 0, NULL, &MaximumSize, PAGE_READONLY, SEC_RESERVE, FileHandle1, FileObject1); - 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"); CheckObject(FileHandle1, PointerCount1, 1L); CheckSection(SectionObject, 0); TestMapView(SectionObject, TRUE, FALSE); - if (SectionObject && SectionObject != InvalidPointer) + if (SectionObject && SectionObject != KmtInvalidPointer) ObDereferenceObject(SectionObject); CheckObject(FileHandle1, PointerCount1, 1L); diff --git a/rostests/kmtests/rtl/RtlException.c b/rostests/kmtests/rtl/RtlException.c index 1b38098ebed..59e30c7a690 100644 --- a/rostests/kmtests/rtl/RtlException.c +++ b/rostests/kmtests/rtl/RtlException.c @@ -7,9 +7,6 @@ #include -#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 @@ START_TEST(RtlException) 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 @@ START_TEST(RtlException) Pointer = _alloca(1024); *Pointer = 5; } - EndSeh(STATUS_STACK_OVERFLOW); + KmtEndSeh(STATUS_STACK_OVERFLOW); #endif } diff --git a/rostests/kmtests/rtl/RtlUnicodeString.c b/rostests/kmtests/rtl/RtlUnicodeString.c index c69bf0a228e..c6289dcd90b 100644 --- a/rostests/kmtests/rtl/RtlUnicodeString.c +++ b/rostests/kmtests/rtl/RtlUnicodeString.c @@ -8,9 +8,6 @@ #define KMT_EMULATE_KERNEL #include -#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 TestFindCharInUnicodeString(VOID) @@ -116,32 +113,32 @@ TestFindCharInUnicodeString(VOID) /* 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 @@ TestFindCharInUnicodeString(VOID) #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 }