static NTSTATUS WINAPI driver_IoControl(DEVICE_OBJECT *device, IRP *irp) { IO_STACK_LOCATION *stack = IoGetCurrentIrpStackLocation(irp); NTSTATUS status = STATUS_NOT_SUPPORTED; ULONG_PTR information = 0; #define DECLARE_TEST(name) \ case WINE_IOCTL_##name: status = RUN_TESTCASE(name, irp, stack, &information); break; switch (stack->Parameters.DeviceIoControl.IoControlCode) { DECLARE_TEST(PsGetCurrentProcessId); DECLARE_TEST(PsGetCurrentThread); default: break; } #undef DECLARE_TEST irp->IoStatus.Status = status; irp->IoStatus.Information = information; IoCompleteRequest(irp, IO_NO_INCREMENT); return status; }
// typedef struct { const char *testname; testfn_t test; } test_item_t; // ------------------------------------------------------------------------- // Declaration of all tests // #define DECLARE_TEST(TEST) {#TEST, TEST} test_item_t all_tests [] = { DECLARE_TEST(zactor_test), DECLARE_TEST(zauth_test), DECLARE_TEST(zarmour_test), DECLARE_TEST(zbeacon_test), DECLARE_TEST(zcert_test), DECLARE_TEST(zcertstore_test), DECLARE_TEST(zchunk_test), DECLARE_TEST(zclock_test), DECLARE_TEST(zconfig_test), DECLARE_TEST(zdigest_test), DECLARE_TEST(zdir_test), DECLARE_TEST(zdir_patch_test), DECLARE_TEST(zfile_test), DECLARE_TEST(zframe_test), DECLARE_TEST(zgossip_test), DECLARE_TEST(zhash_test),