Author: fireball
Date: Mon Jul 10 01:39:49 2006
New Revision: 22980
URL:
http://svn.reactos.org/svn/reactos?rev=22980&view=rev
Log:
Add two simple tests for IoRegisterDeviceInterface() explaining which fields
IoRegisterDeviceInterface() checks for mandatory presence (WDK is not clear about this)
Modified:
trunk/reactos/drivers/test/kmtest/deviface_test.c
trunk/reactos/drivers/test/kmtest/kmtest.c
Modified: trunk/reactos/drivers/test/kmtest/deviface_test.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/test/kmtest/devifa…
==============================================================================
--- trunk/reactos/drivers/test/kmtest/deviface_test.c (original)
+++ trunk/reactos/drivers/test/kmtest/deviface_test.c Mon Jul 10 01:39:49 2006
@@ -23,6 +23,7 @@
/* INCLUDES *******************************************************************/
#include <ddk/ntddk.h>
+#include <ndk/iotypes.h>
#include "kmtest.h"
//#define NDEBUG
@@ -101,12 +102,53 @@
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");
+}
Modified: trunk/reactos/drivers/test/kmtest/kmtest.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/test/kmtest/kmtest…
==============================================================================
--- trunk/reactos/drivers/test/kmtest/kmtest.c (original)
+++ trunk/reactos/drivers/test/kmtest/kmtest.c Mon Jul 10 01:39:49 2006
@@ -103,8 +103,8 @@
/*
* Test Declarations
*/
-VOID FASTCALL DeviceInterfaceTest();
VOID FASTCALL NtoskrnlIoMdlTest();
+VOID FASTCALL NtoskrnlIoDeviceInterface();
VOID FASTCALL NtoskrnlObTest();
/*
@@ -116,7 +116,7 @@
PUNICODE_STRING RegistryPath)
{
DbgPrint("\n===============================================\nKernel Mode
Regression Test driver starting...\n");
- //DeviceInterfaceTest();
+ NtoskrnlIoDeviceInterface();
NtoskrnlIoMdlTest();
NtoskrnlObTest();