From f0d72063a81b50c6a0d12d9281d0fe06beef921e Mon Sep 17 00:00:00 2001 From: Thomas Faber Date: Wed, 26 Sep 2012 18:15:44 +0000 Subject: [PATCH 1/1] [NTDLL_APITEST] - Use GetProcAddress for RtlGetFullPathName_UstrEx to allow running the test on WinXP svn path=/trunk/; revision=57393 --- .../ntdll/RtlGetFullPathName_UstrEx.c | 45 ++++++++++++++----- 1 file changed, 33 insertions(+), 12 deletions(-) diff --git a/rostests/apitests/ntdll/RtlGetFullPathName_UstrEx.c b/rostests/apitests/ntdll/RtlGetFullPathName_UstrEx.c index c81e59749d1..ffd66f1960b 100644 --- a/rostests/apitests/ntdll/RtlGetFullPathName_UstrEx.c +++ b/rostests/apitests/ntdll/RtlGetFullPathName_UstrEx.c @@ -6,6 +6,7 @@ */ #define WIN32_NO_STATUS +#define UNICODE #include #include #include @@ -25,6 +26,19 @@ RtlGetFullPathName_UstrEx( ); */ +NTSTATUS +(NTAPI +*pRtlGetFullPathName_UstrEx)( + IN PUNICODE_STRING FileName, + IN PUNICODE_STRING StaticString, + IN PUNICODE_STRING DynamicString, + IN PUNICODE_STRING *StringUsed, + IN PSIZE_T FilePartSize OPTIONAL, + OUT PBOOLEAN NameInvalid, + OUT RTL_PATH_TYPE* PathType, + OUT PSIZE_T LengthNeeded OPTIONAL +); + #define StartSeh() ExceptionStatus = STATUS_SUCCESS; _SEH2_TRY { #define EndSeh(ExpectedStatus) } _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) { ExceptionStatus = _SEH2_GetExceptionCode(); } _SEH2_END; ok(ExceptionStatus == ExpectedStatus, "Exception %lx, expected %lx\n", ExceptionStatus, ExpectedStatus) @@ -212,7 +226,7 @@ RunTestCases(VOID) NameInvalid = (BOOLEAN)-1; LengthNeeded = 1234; StartSeh() - Status = RtlGetFullPathName_UstrEx(&FileName, + Status = pRtlGetFullPathName_UstrEx(&FileName, &FullPathName, NULL, &StringUsed, @@ -287,28 +301,35 @@ START_TEST(RtlGetFullPathName_UstrEx) SIZE_T LengthNeeded; BOOLEAN Okay; + pRtlGetFullPathName_UstrEx = (PVOID)GetProcAddress(GetModuleHandle(L"ntdll"), "RtlGetFullPathName_UstrEx"); + if (!pRtlGetFullPathName_UstrEx) + { + skip("RtlGetFullPathName_UstrEx unavailable\n"); + return; + } + /* NULL parameters */ StartSeh() - RtlGetFullPathName_UstrEx(NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); + pRtlGetFullPathName_UstrEx(NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); EndSeh(STATUS_ACCESS_VIOLATION); RtlInitUnicodeString(&FileName, NULL); TempString = FileName; StartSeh() - RtlGetFullPathName_UstrEx(&FileName, NULL, NULL, NULL, NULL, NULL, NULL, NULL); + pRtlGetFullPathName_UstrEx(&FileName, NULL, NULL, NULL, NULL, NULL, NULL, NULL); EndSeh(STATUS_ACCESS_VIOLATION); ok_eq_ustr(&FileName, &TempString); RtlInitUnicodeString(&FileName, L""); TempString = FileName; StartSeh() - RtlGetFullPathName_UstrEx(&FileName, NULL, NULL, NULL, NULL, NULL, NULL, NULL); + pRtlGetFullPathName_UstrEx(&FileName, NULL, NULL, NULL, NULL, NULL, NULL, NULL); EndSeh(STATUS_ACCESS_VIOLATION); ok_eq_ustr(&FileName, &TempString); PathType = RtlPathTypeNotSet; StartSeh() - RtlGetFullPathName_UstrEx(NULL, NULL, NULL, NULL, NULL, NULL, &PathType, NULL); + pRtlGetFullPathName_UstrEx(NULL, NULL, NULL, NULL, NULL, NULL, &PathType, NULL); EndSeh(STATUS_ACCESS_VIOLATION); ok(PathType == RtlPathTypeUnknown || broken(PathType == RtlPathTypeNotSet) /* Win7 */, "PathType = %d\n", PathType); @@ -320,7 +341,7 @@ START_TEST(RtlGetFullPathName_UstrEx) NameInvalid = (BOOLEAN)-1; LengthNeeded = 1234; StartSeh() - RtlGetFullPathName_UstrEx(NULL, NULL, NULL, &StringUsed, &FilePartSize, &NameInvalid, &PathType, &LengthNeeded); + pRtlGetFullPathName_UstrEx(NULL, NULL, NULL, &StringUsed, &FilePartSize, &NameInvalid, &PathType, &LengthNeeded); EndSeh(STATUS_ACCESS_VIOLATION); ok(StringUsed == NULL, "StringUsed = %p\n", StringUsed); ok(FilePartSize == 0, "FilePartSize = %lu\n", (ULONG)FilePartSize); @@ -336,7 +357,7 @@ START_TEST(RtlGetFullPathName_UstrEx) NameInvalid = (BOOLEAN)-1; LengthNeeded = 1234; StartSeh() - RtlGetFullPathName_UstrEx(&FileName, NULL, NULL, &StringUsed, &FilePartSize, &NameInvalid, NULL, &LengthNeeded); + pRtlGetFullPathName_UstrEx(&FileName, NULL, NULL, &StringUsed, &FilePartSize, &NameInvalid, NULL, &LengthNeeded); EndSeh(STATUS_ACCESS_VIOLATION); ok_eq_ustr(&FileName, &TempString); ok(StringUsed == NULL, "StringUsed = %p\n", StringUsed); @@ -350,7 +371,7 @@ START_TEST(RtlGetFullPathName_UstrEx) TempString = FileName; PathType = RtlPathTypeNotSet; StartSeh() - Status = RtlGetFullPathName_UstrEx(&FileName, NULL, NULL, NULL, NULL, NULL, &PathType, NULL); + Status = pRtlGetFullPathName_UstrEx(&FileName, NULL, NULL, NULL, NULL, NULL, &PathType, NULL); ok(Status == STATUS_OBJECT_NAME_INVALID, "status = %lx\n", Status); EndSeh(STATUS_SUCCESS); ok_eq_ustr(&FileName, &TempString); @@ -360,7 +381,7 @@ START_TEST(RtlGetFullPathName_UstrEx) TempString = FileName; PathType = RtlPathTypeNotSet; StartSeh() - Status = RtlGetFullPathName_UstrEx(&FileName, NULL, NULL, NULL, NULL, NULL, &PathType, NULL); + Status = pRtlGetFullPathName_UstrEx(&FileName, NULL, NULL, NULL, NULL, NULL, &PathType, NULL); ok(Status == STATUS_OBJECT_NAME_INVALID, "status = %lx\n", Status); EndSeh(STATUS_SUCCESS); ok_eq_ustr(&FileName, &TempString); @@ -372,7 +393,7 @@ START_TEST(RtlGetFullPathName_UstrEx) PathType = RtlPathTypeNotSet; RtlFillMemory(NameInvalidArray, sizeof(NameInvalidArray), 0x55); StartSeh() - Status = RtlGetFullPathName_UstrEx(&FileName, NULL, NULL, NULL, NULL, NameInvalidArray, &PathType, NULL); + Status = pRtlGetFullPathName_UstrEx(&FileName, NULL, NULL, NULL, NULL, NameInvalidArray, &PathType, NULL); ok(Status == STATUS_OBJECT_NAME_INVALID, "status = %lx\n", Status); EndSeh(STATUS_SUCCESS); ok_eq_ustr(&FileName, &TempString); @@ -386,7 +407,7 @@ START_TEST(RtlGetFullPathName_UstrEx) TempString = FileName; PathType = RtlPathTypeNotSet; StartSeh() - Status = RtlGetFullPathName_UstrEx(&FileName, NULL, NULL, NULL, NULL, NULL, &PathType, NULL); + Status = pRtlGetFullPathName_UstrEx(&FileName, NULL, NULL, NULL, NULL, NULL, &PathType, NULL); ok(Status == STATUS_BUFFER_TOO_SMALL, "status = %lx\n", Status); EndSeh(STATUS_SUCCESS); ok_eq_ustr(&FileName, &TempString); @@ -398,7 +419,7 @@ START_TEST(RtlGetFullPathName_UstrEx) RtlInitUnicodeString(&StaticString, NULL); PathType = RtlPathTypeNotSet; StartSeh() - Status = RtlGetFullPathName_UstrEx(&FileName, &StaticString, NULL, NULL, NULL, NULL, &PathType, NULL); + Status = pRtlGetFullPathName_UstrEx(&FileName, &StaticString, NULL, NULL, NULL, NULL, &PathType, NULL); ok(Status == STATUS_BUFFER_TOO_SMALL, "status = %lx\n", Status); EndSeh(STATUS_SUCCESS); ok_eq_ustr(&FileName, &TempString); -- 2.17.1