From 5a766eeaac37fb3096992cc437cf0bae51f8337d Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Fri, 17 Feb 2012 04:21:51 +0000 Subject: [PATCH] [CLASS2] - Store the registry path passed in ScsiClassInitialize to pass in ScsiClassAddDevice svn path=/trunk/; revision=55663 --- reactos/drivers/storage/class/class2/class2.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/reactos/drivers/storage/class/class2/class2.c b/reactos/drivers/storage/class/class2/class2.c index e6528c061f2..2c6989de31c 100644 --- a/reactos/drivers/storage/class/class2/class2.c +++ b/reactos/drivers/storage/class/class2/class2.c @@ -145,6 +145,7 @@ typedef struct _CLASS_DEVICE_INFO { typedef struct _CLASS_DRIVER_EXTENSION { ULONG PortNumber; + UNICODE_STRING RegistryPath; CLASS_INIT_DATA InitializationData; } CLASS_DRIVER_EXTENSION, *PCLASS_DRIVER_EXTENSION; @@ -353,7 +354,7 @@ ScsiClassAddDevice( PDEVICE_OBJECT DeviceObject; NTSTATUS Status; - if (DriverExtension->InitializationData.ClassFindDevices(DriverObject, NULL, &DriverExtension->InitializationData, + if (DriverExtension->InitializationData.ClassFindDevices(DriverObject, &DriverExtension->RegistryPath, &DriverExtension->InitializationData, PhysicalDeviceObject, DriverExtension->PortNumber)) { /* Create a device object */ @@ -440,6 +441,7 @@ Return Value: CCHAR deviceNameBuffer[256]; BOOLEAN deviceFound = FALSE; PCLASS_DRIVER_EXTENSION DriverExtension; + PUNICODE_STRING RegistryPath = Argument2; DebugPrint((3,"\n\nSCSI Class Driver\n")); @@ -480,6 +482,17 @@ Return Value: RtlCopyMemory(&DriverExtension->InitializationData, InitializationData, sizeof(CLASS_INIT_DATA)); DriverExtension->PortNumber = 0; + DriverExtension->RegistryPath.Buffer = ExAllocatePool(PagedPool, RegistryPath->MaximumLength); + if (!DriverExtension->RegistryPath.Buffer) + return STATUS_NO_MEMORY; + + DriverExtension->RegistryPath.Length = RegistryPath->Length; + DriverExtension->RegistryPath.MaximumLength = RegistryPath->MaximumLength; + + RtlCopyMemory(DriverExtension->RegistryPath.Buffer, + RegistryPath->Buffer, + RegistryPath->Length); + // // Update driver object with entry points. //