for (TheIndex = 0; TheIndex < (ThreadCount); ++TheIndex) \
{ \
TheThread = CONTAINING_RECORD(TheEntry, KTHREAD, \
- WaitBlock[0].WaitListEntry); \
+ WaitBlock[0].WaitListEntry); \
ok_eq_pointer(TheThread, (ThreadList)[TheIndex]); \
ok_eq_pointer(TheEntry->Flink->Blink, TheEntry); \
TheEntry = TheEntry->Flink; \
KPRIORITY Priority;
LARGE_INTEGER LongTimeout, ShortTimeout;
INT i;
- KWAIT_BLOCK WaitBlock[MAXIMUM_WAIT_OBJECTS];
- PVOID ThreadObjects[MAXIMUM_WAIT_OBJECTS];
+ KWAIT_BLOCK WaitBlock[RTL_NUMBER_OF(Threads)];
+ PVOID ThreadObjects[RTL_NUMBER_OF(Threads)];
LONG State;
PKTHREAD Thread = KeGetCurrentThread();
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,
-#ifdef _PROPER_NT_EXPORTS
- *PsThreadType,
-#else
- PsThreadType,
-#endif
- KernelMode, (PVOID *)&Threads[i].Thread, NULL);
+ Status = ObReferenceObjectByHandle(Threads[i].Handle, SYNCHRONIZE, *PsThreadType, KernelMode, (PVOID *)&Threads[i].Thread, NULL);
ok_eq_hex(Status, STATUS_SUCCESS);
ThreadObjects[i] = Threads[i].Thread;
Priority = KeQueryPriorityThread(Threads[i].Thread);
{
KEVENT Event;
KIRQL Irql;
- KIRQL Irqls[] = { PASSIVE_LEVEL, APC_LEVEL, DISPATCH_LEVEL, HIGH_LEVEL };
- INT i;
+ KIRQL Irqls[] = { PASSIVE_LEVEL, APC_LEVEL, DISPATCH_LEVEL };
+ ULONG i;
KPRIORITY PriorityIncrement;
- for (i = 0; i < sizeof Irqls / sizeof Irqls[0]; ++i)
+ for (i = 0; i < RTL_NUMBER_OF(Irqls); ++i)
{
- /* DRIVER_IRQL_NOT_LESS_OR_EQUAL (TODO: on MP only?) */
- if (Irqls[i] > DISPATCH_LEVEL && KmtIsCheckedBuild)
- return;
KeRaiseIrql(Irqls[i], &Irql);
TestEventFunctional(&Event, NotificationEvent, Irqls[i]);
TestEventFunctional(&Event, SynchronizationEvent, Irqls[i]);
KeLowerIrql(Irql);
}
- for (i = 0; i < sizeof Irqls / sizeof Irqls[0]; ++i)
+ for (i = 0; i < RTL_NUMBER_OF(Irqls); ++i)
{
/* creating threads above DISPATCH_LEVEL... nope */
- if (Irqls[i] >= DISPATCH_LEVEL && KmtIsCheckedBuild)
+ if (Irqls[i] >= DISPATCH_LEVEL)
continue;
KeRaiseIrql(Irqls[i], &Irql);
trace("IRQL: %u\n", Irqls[i]);
for (PriorityIncrement = -1; PriorityIncrement <= 8; ++PriorityIncrement)
{
+ if (PriorityIncrement < 0 && KmtIsCheckedBuild)
+ continue;
trace("PriorityIncrement: %ld\n", PriorityIncrement);
trace("-> Checking KeSetEvent, NotificationEvent\n");
TestEventConcurrent(&Event, NotificationEvent, Irqls[i], KeSetEvent, PriorityIncrement, 1, TRUE);