mirror of
https://github.com/reactos/reactos.git
synced 2025-08-02 21:46:05 +00:00
[NTDLL_APITEST]
- Use GetProcAddress for RtlGetFullPathName_UstrEx to allow running the test on WinXP svn path=/trunk/; revision=57393
This commit is contained in:
parent
6b568374dd
commit
f0d72063a8
1 changed files with 33 additions and 12 deletions
|
@ -6,6 +6,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define WIN32_NO_STATUS
|
#define WIN32_NO_STATUS
|
||||||
|
#define UNICODE
|
||||||
#include <wine/test.h>
|
#include <wine/test.h>
|
||||||
#include <pseh/pseh2.h>
|
#include <pseh/pseh2.h>
|
||||||
#include <ndk/rtlfuncs.h>
|
#include <ndk/rtlfuncs.h>
|
||||||
|
@ -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 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)
|
#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;
|
NameInvalid = (BOOLEAN)-1;
|
||||||
LengthNeeded = 1234;
|
LengthNeeded = 1234;
|
||||||
StartSeh()
|
StartSeh()
|
||||||
Status = RtlGetFullPathName_UstrEx(&FileName,
|
Status = pRtlGetFullPathName_UstrEx(&FileName,
|
||||||
&FullPathName,
|
&FullPathName,
|
||||||
NULL,
|
NULL,
|
||||||
&StringUsed,
|
&StringUsed,
|
||||||
|
@ -287,28 +301,35 @@ START_TEST(RtlGetFullPathName_UstrEx)
|
||||||
SIZE_T LengthNeeded;
|
SIZE_T LengthNeeded;
|
||||||
BOOLEAN Okay;
|
BOOLEAN Okay;
|
||||||
|
|
||||||
|
pRtlGetFullPathName_UstrEx = (PVOID)GetProcAddress(GetModuleHandle(L"ntdll"), "RtlGetFullPathName_UstrEx");
|
||||||
|
if (!pRtlGetFullPathName_UstrEx)
|
||||||
|
{
|
||||||
|
skip("RtlGetFullPathName_UstrEx unavailable\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/* NULL parameters */
|
/* NULL parameters */
|
||||||
StartSeh()
|
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);
|
EndSeh(STATUS_ACCESS_VIOLATION);
|
||||||
|
|
||||||
RtlInitUnicodeString(&FileName, NULL);
|
RtlInitUnicodeString(&FileName, NULL);
|
||||||
TempString = FileName;
|
TempString = FileName;
|
||||||
StartSeh()
|
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);
|
EndSeh(STATUS_ACCESS_VIOLATION);
|
||||||
ok_eq_ustr(&FileName, &TempString);
|
ok_eq_ustr(&FileName, &TempString);
|
||||||
|
|
||||||
RtlInitUnicodeString(&FileName, L"");
|
RtlInitUnicodeString(&FileName, L"");
|
||||||
TempString = FileName;
|
TempString = FileName;
|
||||||
StartSeh()
|
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);
|
EndSeh(STATUS_ACCESS_VIOLATION);
|
||||||
ok_eq_ustr(&FileName, &TempString);
|
ok_eq_ustr(&FileName, &TempString);
|
||||||
|
|
||||||
PathType = RtlPathTypeNotSet;
|
PathType = RtlPathTypeNotSet;
|
||||||
StartSeh()
|
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);
|
EndSeh(STATUS_ACCESS_VIOLATION);
|
||||||
ok(PathType == RtlPathTypeUnknown ||
|
ok(PathType == RtlPathTypeUnknown ||
|
||||||
broken(PathType == RtlPathTypeNotSet) /* Win7 */, "PathType = %d\n", PathType);
|
broken(PathType == RtlPathTypeNotSet) /* Win7 */, "PathType = %d\n", PathType);
|
||||||
|
@ -320,7 +341,7 @@ START_TEST(RtlGetFullPathName_UstrEx)
|
||||||
NameInvalid = (BOOLEAN)-1;
|
NameInvalid = (BOOLEAN)-1;
|
||||||
LengthNeeded = 1234;
|
LengthNeeded = 1234;
|
||||||
StartSeh()
|
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);
|
EndSeh(STATUS_ACCESS_VIOLATION);
|
||||||
ok(StringUsed == NULL, "StringUsed = %p\n", StringUsed);
|
ok(StringUsed == NULL, "StringUsed = %p\n", StringUsed);
|
||||||
ok(FilePartSize == 0, "FilePartSize = %lu\n", (ULONG)FilePartSize);
|
ok(FilePartSize == 0, "FilePartSize = %lu\n", (ULONG)FilePartSize);
|
||||||
|
@ -336,7 +357,7 @@ START_TEST(RtlGetFullPathName_UstrEx)
|
||||||
NameInvalid = (BOOLEAN)-1;
|
NameInvalid = (BOOLEAN)-1;
|
||||||
LengthNeeded = 1234;
|
LengthNeeded = 1234;
|
||||||
StartSeh()
|
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);
|
EndSeh(STATUS_ACCESS_VIOLATION);
|
||||||
ok_eq_ustr(&FileName, &TempString);
|
ok_eq_ustr(&FileName, &TempString);
|
||||||
ok(StringUsed == NULL, "StringUsed = %p\n", StringUsed);
|
ok(StringUsed == NULL, "StringUsed = %p\n", StringUsed);
|
||||||
|
@ -350,7 +371,7 @@ START_TEST(RtlGetFullPathName_UstrEx)
|
||||||
TempString = FileName;
|
TempString = FileName;
|
||||||
PathType = RtlPathTypeNotSet;
|
PathType = RtlPathTypeNotSet;
|
||||||
StartSeh()
|
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);
|
ok(Status == STATUS_OBJECT_NAME_INVALID, "status = %lx\n", Status);
|
||||||
EndSeh(STATUS_SUCCESS);
|
EndSeh(STATUS_SUCCESS);
|
||||||
ok_eq_ustr(&FileName, &TempString);
|
ok_eq_ustr(&FileName, &TempString);
|
||||||
|
@ -360,7 +381,7 @@ START_TEST(RtlGetFullPathName_UstrEx)
|
||||||
TempString = FileName;
|
TempString = FileName;
|
||||||
PathType = RtlPathTypeNotSet;
|
PathType = RtlPathTypeNotSet;
|
||||||
StartSeh()
|
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);
|
ok(Status == STATUS_OBJECT_NAME_INVALID, "status = %lx\n", Status);
|
||||||
EndSeh(STATUS_SUCCESS);
|
EndSeh(STATUS_SUCCESS);
|
||||||
ok_eq_ustr(&FileName, &TempString);
|
ok_eq_ustr(&FileName, &TempString);
|
||||||
|
@ -372,7 +393,7 @@ START_TEST(RtlGetFullPathName_UstrEx)
|
||||||
PathType = RtlPathTypeNotSet;
|
PathType = RtlPathTypeNotSet;
|
||||||
RtlFillMemory(NameInvalidArray, sizeof(NameInvalidArray), 0x55);
|
RtlFillMemory(NameInvalidArray, sizeof(NameInvalidArray), 0x55);
|
||||||
StartSeh()
|
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);
|
ok(Status == STATUS_OBJECT_NAME_INVALID, "status = %lx\n", Status);
|
||||||
EndSeh(STATUS_SUCCESS);
|
EndSeh(STATUS_SUCCESS);
|
||||||
ok_eq_ustr(&FileName, &TempString);
|
ok_eq_ustr(&FileName, &TempString);
|
||||||
|
@ -386,7 +407,7 @@ START_TEST(RtlGetFullPathName_UstrEx)
|
||||||
TempString = FileName;
|
TempString = FileName;
|
||||||
PathType = RtlPathTypeNotSet;
|
PathType = RtlPathTypeNotSet;
|
||||||
StartSeh()
|
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);
|
ok(Status == STATUS_BUFFER_TOO_SMALL, "status = %lx\n", Status);
|
||||||
EndSeh(STATUS_SUCCESS);
|
EndSeh(STATUS_SUCCESS);
|
||||||
ok_eq_ustr(&FileName, &TempString);
|
ok_eq_ustr(&FileName, &TempString);
|
||||||
|
@ -398,7 +419,7 @@ START_TEST(RtlGetFullPathName_UstrEx)
|
||||||
RtlInitUnicodeString(&StaticString, NULL);
|
RtlInitUnicodeString(&StaticString, NULL);
|
||||||
PathType = RtlPathTypeNotSet;
|
PathType = RtlPathTypeNotSet;
|
||||||
StartSeh()
|
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);
|
ok(Status == STATUS_BUFFER_TOO_SMALL, "status = %lx\n", Status);
|
||||||
EndSeh(STATUS_SUCCESS);
|
EndSeh(STATUS_SUCCESS);
|
||||||
ok_eq_ustr(&FileName, &TempString);
|
ok_eq_ustr(&FileName, &TempString);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue