Add two simple tests for IoRegisterDeviceInterface() explaining which fields IoRegist...
authorAleksey Bragin <aleksey@reactos.org>
Sun, 9 Jul 2006 21:39:49 +0000 (21:39 +0000)
committerAleksey Bragin <aleksey@reactos.org>
Sun, 9 Jul 2006 21:39:49 +0000 (21:39 +0000)
svn path=/trunk/; revision=22980

reactos/drivers/test/kmtest/deviface_test.c
reactos/drivers/test/kmtest/kmtest.c

index 727fb74..7e34258 100644 (file)
@@ -23,6 +23,7 @@
 /* INCLUDES *******************************************************************/
 
 #include <ddk/ntddk.h>
+#include <ndk/iotypes.h>
 #include "kmtest.h"
 
 //#define NDEBUG
@@ -101,12 +102,53 @@ VOID FASTCALL DeviceInterfaceTest_Func()
    ExFreePool(SymbolicLinkList);
 }
 
-VOID FASTCALL DeviceInterfaceTest()
+VOID RegisterDI_Test()
 {
-   DPRINT("Calling DeviceInterfaceTest_Func with native functions\n");
-   IoGetDeviceInterfaces_Func = IoGetDeviceInterfaces;
-   DeviceInterfaceTest_Func();
-   DPRINT("Calling DeviceInterfaceTest_Func with ReactOS functions\n");
-   IoGetDeviceInterfaces_Func = ReactOS_IoGetDeviceInterfaces;
-   DeviceInterfaceTest_Func();
+    GUID Guid = {0x378de44c, 0x56ef, 0x11d1, {0xbc, 0x8c, 0x00, 0xa0, 0xc9, 0x14, 0x05, 0xdd}};
+    DEVICE_OBJECT DeviceObject;
+    EXTENDED_DEVOBJ_EXTENSION DeviceObjectExtension;
+    DEVICE_NODE DeviceNode;
+    UNICODE_STRING SymbolicLinkName;
+    NTSTATUS Status;
+
+    RtlInitUnicodeString(&SymbolicLinkName, L"");
+
+    // Prepare our surrogate of a Device Object
+    DeviceObject.DeviceObjectExtension = (PDEVOBJ_EXTENSION)&DeviceObjectExtension;
+
+    // 1. DeviceNode = NULL
+    DeviceObjectExtension.DeviceNode = NULL;
+    Status = IoRegisterDeviceInterface(&DeviceObject, &Guid, NULL,
+        &SymbolicLinkName);
+
+    ok(Status == STATUS_INVALID_DEVICE_REQUEST,
+        "IoRegisterDeviceInterface returned 0x%08lX\n", Status);
+
+    // 2. DeviceNode->InstancePath is of a null length
+    DeviceObjectExtension.DeviceNode = &DeviceNode;
+    DeviceNode.InstancePath.Length = 0;
+    Status = IoRegisterDeviceInterface(&DeviceObject, &Guid, NULL,
+        &SymbolicLinkName);
+
+    ok(Status == STATUS_INVALID_DEVICE_REQUEST,
+        "IoRegisterDeviceInterface returned 0x%08lX\n", Status);
+}
+
+VOID FASTCALL NtoskrnlIoDeviceInterface()
+{
+    StartTest();
+
+    // Test IoRegisterDeviceInterface() failures now
+    RegisterDI_Test();
+
+/*
+    DPRINT("Calling DeviceInterfaceTest_Func with native functions\n");
+    IoGetDeviceInterfaces_Func = IoGetDeviceInterfaces;
+    DeviceInterfaceTest_Func();
+    DPRINT("Calling DeviceInterfaceTest_Func with ReactOS functions\n");
+    IoGetDeviceInterfaces_Func = ReactOS_IoGetDeviceInterfaces;
+    DeviceInterfaceTest_Func();
+*/
+
+    FinishTest("NTOSKRNL Io Device Interface Test");
 }
index 83da9c1..a5d61ab 100644 (file)
@@ -103,8 +103,8 @@ int kmtest_ok(int condition, const char *msg, ... )
 /*
  * Test Declarations
  */
-VOID FASTCALL DeviceInterfaceTest();
 VOID FASTCALL NtoskrnlIoMdlTest();
+VOID FASTCALL NtoskrnlIoDeviceInterface();
 VOID FASTCALL NtoskrnlObTest();
 
 /*
@@ -116,7 +116,7 @@ DriverEntry(PDRIVER_OBJECT DriverObject,
             PUNICODE_STRING RegistryPath)
 {
     DbgPrint("\n===============================================\nKernel Mode Regression Test driver starting...\n");
-    //DeviceInterfaceTest();
+    NtoskrnlIoDeviceInterface();
     NtoskrnlIoMdlTest();
     NtoskrnlObTest();