Add a temp hack that allows to compile kmtest_drv with either the current incompatible object type data imports or with the fixed ones

svn path=/trunk/; revision=63222
This commit is contained in:
Timo Kreuzer 2014-05-10 17:19:53 +00:00
parent 5a330ec787
commit be359827c5
11 changed files with 152 additions and 12 deletions

View file

@ -742,7 +742,11 @@ KmtStartThread(
{
Status = ObReferenceObjectByHandle(ThreadHandle,
SYNCHRONIZE,
#ifdef _PROPER_NT_EXPORTS
*PsThreadType,
#else
PsThreadType,
#endif
KernelMode,
&ThreadObject,
NULL);

View file

@ -90,7 +90,7 @@ TestFastMutex(
KmtSetIrql(OriginalIrql);
CheckMutex(Mutex, 1L, NULL, 0LU, PASSIVE_LEVEL, OriginalIrql);
}
if (!KmtIsCheckedBuild)
{
/* release without acquire */
@ -196,7 +196,13 @@ StartThread(
InitializeObjectAttributes(&Attributes, NULL, OBJ_KERNEL_HANDLE, NULL, NULL);
Status = PsCreateSystemThread(&ThreadData->Handle, GENERIC_ALL, &Attributes, NULL, NULL, AcquireMutexThread, ThreadData);
ok_eq_hex(Status, STATUS_SUCCESS);
Status = ObReferenceObjectByHandle(ThreadData->Handle, SYNCHRONIZE, PsThreadType, KernelMode, (PVOID *)&ThreadData->Thread, NULL);
Status = ObReferenceObjectByHandle(ThreadData->Handle, SYNCHRONIZE,
#ifdef _PROPER_NT_EXPORTS
*PsThreadType,
#else
PsThreadType,
#endif
KernelMode, (PVOID *)&ThreadData->Thread, NULL);
ok_eq_hex(Status, STATUS_SUCCESS);
return KeWaitForSingleObject(&ThreadData->OutEvent, Executive, KernelMode, FALSE, Timeout);

View file

@ -268,7 +268,14 @@ StartThread(
InitializeObjectAttributes(&Attributes, NULL, OBJ_KERNEL_HANDLE, NULL, NULL);
Status = PsCreateSystemThread(&ThreadData->Handle, GENERIC_ALL, &Attributes, NULL, NULL, AcquireResourceThread, ThreadData);
ok_eq_hex(Status, STATUS_SUCCESS);
Status = ObReferenceObjectByHandle(ThreadData->Handle, SYNCHRONIZE, PsThreadType, KernelMode, (PVOID *)&ThreadData->Thread, NULL);
Status = ObReferenceObjectByHandle(ThreadData->Handle, SYNCHRONIZE,
#ifdef _PROPER_NT_EXPORTS
*PsThreadType,
#else
PsThreadType,
#endif
KernelMode, (PVOID *)&ThreadData->Thread, NULL);
ok_eq_hex(Status, STATUS_SUCCESS);
return KeWaitForSingleObject(&ThreadData->OutEvent, Executive, KernelMode, FALSE, Timeout);

View file

@ -57,7 +57,11 @@ KernelModeTest(IN PVOID Context)
{
Status = ObReferenceObjectByHandle(TargetHandle,
FILE_READ_DATA,
#ifdef _PROPER_NT_EXPORTS
*IoFileObjectType,
#else
IoFileObjectType,
#endif
KernelMode,
(PVOID *)&TargetFileObject,
NULL);
@ -103,7 +107,11 @@ KernelModeTest(IN PVOID Context)
{
Status = ObReferenceObjectByHandle(ParentHandle,
FILE_READ_DATA,
#ifdef _PROPER_NT_EXPORTS
*IoFileObjectType,
#else
IoFileObjectType,
#endif
KernelMode,
(PVOID *)&ParentFileObject,
NULL);
@ -173,7 +181,11 @@ KernelModeTest(IN PVOID Context)
{
Status = ObReferenceObjectByHandle(ParentHandle,
FILE_READ_DATA,
#ifdef _PROPER_NT_EXPORTS
*IoFileObjectType,
#else
IoFileObjectType,
#endif
KernelMode,
(PVOID *)&ParentFileObject,
NULL);
@ -187,7 +199,11 @@ KernelModeTest(IN PVOID Context)
ok_eq_long(RtlCompareUnicodeString(&ParentFileObject->FileName, &TargetFileObject->FileName, FALSE), 0);
Status = ObReferenceObjectByHandle(SystemRootHandle,
FILE_READ_DATA,
#ifdef _PROPER_NT_EXPORTS
*IoFileObjectType,
#else
IoFileObjectType,
#endif
KernelMode,
(PVOID *)&SystemRootFileObject,
NULL);
@ -240,7 +256,12 @@ KernelModeTest(IN PVOID Context)
{
Status = ObReferenceObjectByHandle(ParentHandle,
FILE_READ_DATA,
#ifdef _PROPER_NT_EXPORTS
*IoFileObjectType,
#else
IoFileObjectType,
#endif
KernelMode,
(PVOID *)&ParentFileObject,
NULL);
@ -302,7 +323,12 @@ KernelModeTest(IN PVOID Context)
{
Status = ObReferenceObjectByHandle(ParentHandle,
FILE_READ_DATA,
#ifdef _PROPER_NT_EXPORTS
*IoFileObjectType,
#else
IoFileObjectType,
#endif
KernelMode,
(PVOID *)&ParentFileObject,
NULL);
@ -316,7 +342,12 @@ KernelModeTest(IN PVOID Context)
ok_eq_long(RtlCompareUnicodeString(&ParentFileObject->FileName, &TargetFileObject->FileName, FALSE), 0);
Status = ObReferenceObjectByHandle(SystemRootHandle,
FILE_READ_DATA,
#ifdef _PROPER_NT_EXPORTS
*IoFileObjectType,
#else
IoFileObjectType,
#endif
KernelMode,
(PVOID *)&SystemRootFileObject,
NULL);
@ -534,7 +565,11 @@ START_TEST(IoCreateFile)
/* Then, just wait on our thread to finish */
Status = ObReferenceObjectByHandle(ThreadHandle,
SYNCHRONIZE,
#ifdef _PROPER_NT_EXPORTS
*PsThreadType,
#else
PsThreadType,
#endif
KernelMode,
&ThreadObject,
NULL);

View file

@ -169,7 +169,13 @@ TestEventConcurrent(
Threads[i].Signal = FALSE;
Status = PsCreateSystemThread(&Threads[i].Handle, GENERIC_ALL, NULL, NULL, NULL, WaitForEventThread, &Threads[i]);
ok_eq_hex(Status, STATUS_SUCCESS);
Status = ObReferenceObjectByHandle(Threads[i].Handle, SYNCHRONIZE, PsThreadType, KernelMode, (PVOID *)&Threads[i].Thread, NULL);
Status = ObReferenceObjectByHandle(Threads[i].Handle, SYNCHRONIZE,
#ifdef _PROPER_NT_EXPORTS
*PsThreadType,
#else
PsThreadType,
#endif
KernelMode, (PVOID *)&Threads[i].Thread, NULL);
ok_eq_hex(Status, STATUS_SUCCESS);
ThreadObjects[i] = Threads[i].Thread;
Priority = KeQueryPriorityThread(Threads[i].Thread);

View file

@ -204,7 +204,13 @@ StartThread(
InitializeObjectAttributes(&Attributes, NULL, OBJ_KERNEL_HANDLE, NULL, NULL);
Status = PsCreateSystemThread(&ThreadData->Handle, GENERIC_ALL, &Attributes, NULL, NULL, AcquireMutexThread, ThreadData);
ok_eq_hex(Status, STATUS_SUCCESS);
Status = ObReferenceObjectByHandle(ThreadData->Handle, SYNCHRONIZE, PsThreadType, KernelMode, (PVOID *)&ThreadData->Thread, NULL);
Status = ObReferenceObjectByHandle(ThreadData->Handle, SYNCHRONIZE,
#ifdef _PROPER_NT_EXPORTS
*PsThreadType,
#else
PsThreadType,
#endif
KernelMode, (PVOID *)&ThreadData->Thread, NULL);
ok_eq_hex(Status, STATUS_SUCCESS);
return KeWaitForSingleObject(&ThreadData->OutEvent, Executive, KernelMode, FALSE, Timeout);

View file

@ -428,7 +428,13 @@ START_TEST(MmSection)
if (!skip(Status == STATUS_SUCCESS && FileHandle1 != NULL, "Failed to open file 1\n"))
{
Status = ObReferenceObjectByHandle(FileHandle1, FILE_READ_DATA | FILE_WRITE_DATA, IoFileObjectType, KernelMode, (PVOID *)&FileObject1, NULL);
Status = ObReferenceObjectByHandle(FileHandle1, FILE_READ_DATA | FILE_WRITE_DATA,
#ifdef _PROPER_NT_EXPORTS
*IoFileObjectType,
#else
IoFileObjectType,
#endif
KernelMode, (PVOID *)&FileObject1, NULL);
ok_eq_hex(Status, STATUS_SUCCESS);
ok(FileObject1 != NULL, "FileObject1 is NULL\n");
CheckObject(FileHandle1, 3L, 1L);
@ -436,7 +442,13 @@ START_TEST(MmSection)
if (!skip(Status == STATUS_SUCCESS && FileHandle2 != NULL, "Failed to open file 2\n"))
{
Status = ObReferenceObjectByHandle(FileHandle2, FILE_READ_DATA | FILE_WRITE_DATA, IoFileObjectType, KernelMode, (PVOID *)&FileObject2, NULL);
Status = ObReferenceObjectByHandle(FileHandle2, FILE_READ_DATA | FILE_WRITE_DATA,
#ifdef _PROPER_NT_EXPORTS
*IoFileObjectType,
#else
IoFileObjectType,
#endif
KernelMode, (PVOID *)&FileObject2, NULL);
ok_eq_hex(Status, STATUS_SUCCESS);
ok(FileObject2 != NULL, "FileObject2 is NULL\n");
}

View file

@ -437,7 +437,13 @@ SystemProcessTest(VOID)
goto cleanup;
}
Status = ObReferenceObjectByHandle(Thread1, THREAD_ALL_ACCESS, PsThreadType, KernelMode, &ThreadObjects[0], NULL);
Status = ObReferenceObjectByHandle(Thread1, THREAD_ALL_ACCESS,
#ifdef _PROPER_NT_EXPORTS
*PsThreadType,
#else
PsThreadType,
#endif
KernelMode, &ThreadObjects[0], NULL);
if (!NT_SUCCESS(Status))
{
trace("error referencing thread1\n");
@ -451,7 +457,13 @@ SystemProcessTest(VOID)
goto cleanup;
}
Status = ObReferenceObjectByHandle(Thread2, THREAD_ALL_ACCESS, PsThreadType, KernelMode, &ThreadObjects[1], NULL);
Status = ObReferenceObjectByHandle(Thread2, THREAD_ALL_ACCESS,
#ifdef _PROPER_NT_EXPORTS
*PsThreadType,
#else
PsThreadType,
#endif
KernelMode, &ThreadObjects[1], NULL);
if (!NT_SUCCESS(Status))
{
trace("error referencing thread2\n");

View file

@ -464,7 +464,13 @@ BasicBehaviorChecks(HANDLE FileHandle)
/* FIXME: Null pointer dereference. See ROSTESTS-108 */
#ifdef ROSTESTS_108_FIXED
//mimic lack of section support for a particular file as well.
Status = ObReferenceObjectByHandle(FileHandle, STANDARD_RIGHTS_ALL, IoFileObjectType, KernelMode, (PVOID *)&FileObject, NULL);
Status = ObReferenceObjectByHandle(FileHandle, STANDARD_RIGHTS_ALL,
#ifdef _PROPER_NT_EXPORTS
*IoFileObjectType,
#else
IoFileObjectType,
#endif
KernelMode, (PVOID *)&FileObject, NULL);
if (!skip(NT_SUCCESS(Status), "Cannot reference object by handle\n"))
{
PSECTION_OBJECT_POINTERS Pointers = FileObject->SectionObjectPointer;

View file

@ -390,7 +390,13 @@ BehaviorChecks(HANDLE FileHandleReadOnly, HANDLE FileHandleWriteOnly)
Status = PsCreateSystemThread(&SysThreadHandle, STANDARD_RIGHTS_ALL, &ObjectAttributes, NULL, NULL, SystemProcessWorker, NULL);
if (!skip(NT_SUCCESS(Status), "Error creating System thread. Error = %p\n", Status))
{
Status = ObReferenceObjectByHandle(SysThreadHandle, THREAD_ALL_ACCESS, PsThreadType, KernelMode, &ThreadObject, NULL);
Status = ObReferenceObjectByHandle(SysThreadHandle, THREAD_ALL_ACCESS,
#ifdef _PROPER_NT_EXPORTS
*PsThreadType,
#else
PsThreadType,
#endif
KernelMode, &ThreadObject, NULL);
if (!skip(NT_SUCCESS(Status), "Error getting reference to System thread when testing file-backed section\n"))
{
//wait until the system thread actually terminates
@ -515,7 +521,13 @@ PageFileBehaviorChecks()
if (!skip(NT_SUCCESS(Status), "Error creating System thread. Error = %p\n", Status))
{
Status = ObReferenceObjectByHandle(SysThreadHandle, THREAD_ALL_ACCESS, PsThreadType, KernelMode, &ThreadObject, NULL);
Status = ObReferenceObjectByHandle(SysThreadHandle, THREAD_ALL_ACCESS,
#ifdef _PROPER_NT_EXPORTS
*PsThreadType,
#else
PsThreadType,
#endif
KernelMode, &ThreadObject, NULL);
if (!skip(NT_SUCCESS(Status), "Error getting reference to System thread when testing pagefile-backed section\n"))
{
//wait until the system thread actually terminates

View file

@ -164,6 +164,40 @@ TestObjectTypes(VOID)
SeDefaultObjectMethod = ObpTypeObjectType->TypeInfo.SecurityProcedure;
ok(SeDefaultObjectMethod != NULL, "No SeDefaultObjectMethod\n");
#ifdef _PROPER_NT_EXPORTS
#define ExSemaphoreObjectType *ExSemaphoreObjectType
#define SeTokenObjectType *SeTokenObjectType
#define PsProcessType *PsProcessType
#define PsThreadType *PsThreadType
#define ExEventObjectType *ExEventObjectType
#define IoFileObjectType *IoFileObjectType
#endif
#ifdef _PROPER_NT_NDK_EXPORTS
#define ObpTypeObjectType *ObpTypeObjectType
#define ObpDirectoryObjectType *ObpDirectoryObjectType
#define ObpSymbolicLinkObjectType *ObpSymbolicLinkObjectType
#define PsJobType *PsJobType
#define DbgkDebugObjectType *DbgkDebugObjectType
#define ExEventPairObjectType *ExEventPairObjectType
#define ExMutantObjectType *ExMutantObjectType
#define ExCallbackObjectType *ExCallbackObjectType
#define ExTimerObjectType *ExTimerObjectType
#define ExProfileObjectType *ExProfileObjectType
#define ExpKeyedEventObjectType *ExpKeyedEventObjectType
#define ExWindowStationObjectType *ExWindowStationObjectType
#define ExDesktopObjectType *ExDesktopObjectType
#define MmSectionObjectType *MmSectionObjectType
#define CmpKeyObjectType *CmpKeyObjectType
#define LpcPortObjectType *LpcPortObjectType
#define LpcWaitablePortObjectType *LpcWaitablePortObjectType
#define IoAdapterObjectType *IoAdapterObjectType
#define IoControllerObjectType *IoControllerObjectType
#define IoDeviceObjectType *IoDeviceObjectType
#define IoDriverObjectType *IoDriverObjectType
#define IoCompletionObjectType *IoCompletionObjectType
#define WmipGuidObjectType *WmipGuidObjectType
#endif
Index = 1;
CheckObjectType(Type, ObpTypeObjectType, OBT_MAINTAIN_TYPE_LIST | OBT_CUSTOM_KEY, 0x100, 0x020000, 0x020000, 0x020000, 0x0f0001, 0x1f0001);
ok_eq_hex(ObpTypeObjectType->Key, TAG('ObjT'));