Herv, Poussineau <poussine(a)freesurf.fr>
Fill DriverName field in DRIVER_OBJECT structure.
Modified: trunk/reactos/ntoskrnl/io/create.c
Modified: trunk/reactos/ntoskrnl/io/driver.c
_____
Modified: trunk/reactos/ntoskrnl/io/create.c
--- trunk/reactos/ntoskrnl/io/create.c 2005-01-12 10:23:25 UTC (rev
12952)
+++ trunk/reactos/ntoskrnl/io/create.c 2005-01-12 10:24:56 UTC (rev
12953)
@@ -86,8 +86,10 @@
if (ParentObjectType != IoDeviceObjectType &&
ParentObjectType != IoFileObjectType)
{
- CPRINT("Parent is a %S which is neither a file type nor a device
type\n",
- BODY_TO_HEADER(Parent)->ObjectType->TypeName.Buffer);
+ DPRINT("Parent [%wZ] is a %S which is neither a file type nor a
device type ; remaining path = %S\n",
+ &BODY_TO_HEADER(Parent)->Name,
+ BODY_TO_HEADER(Parent)->ObjectType->TypeName.Buffer,
+ RemainingPath);
return(STATUS_UNSUCCESSFUL);
}
_____
Modified: trunk/reactos/ntoskrnl/io/driver.c
--- trunk/reactos/ntoskrnl/io/driver.c 2005-01-12 10:23:25 UTC (rev
12952)
+++ trunk/reactos/ntoskrnl/io/driver.c 2005-01-12 10:24:56 UTC (rev
12953)
@@ -181,6 +181,7 @@
DPRINT("IopDeleteDriver(ObjectBody %x)\n", ObjectBody);
ExFreePool(Object->DriverExtension);
+ RtlFreeUnicodeString(&Object->DriverName);
OldIrql = KeRaiseIrqlToDpcLevel();
@@ -208,6 +209,7 @@
UNICODE_STRING DriverName;
OBJECT_ATTRIBUTES ObjectAttributes;
NTSTATUS Status;
+ PWSTR Buffer = NULL;
DPRINT("IopCreateDriverObject(%p '%wZ' %x %p %x)\n",
DriverObject, ServiceName, FileSystem, DriverImageStart,
DriverImageSize);
@@ -225,6 +227,10 @@
RtlInitUnicodeString(&DriverName, NameBuffer);
DPRINT("Driver name: '%wZ'\n", &DriverName);
+
+ Buffer = (PWSTR)ExAllocatePool(NonPagedPool, DriverName.Length);
+ /* If we don't success, it is not a problem. Our driver
+ * object will not have associated driver name... */
}
else
{
@@ -258,6 +264,12 @@
Object->DriverStart = DriverImageStart;
Object->DriverSize = DriverImageSize;
+ if (Buffer)
+ {
+ Object->DriverName.Buffer = Buffer;
+ Object->DriverName.Length = Object->DriverName.MaximumLength =
DriverName.Length;
+ RtlCopyMemory(Object->DriverName.Buffer, DriverName.Buffer,
DriverName.Length);
+ }
*DriverObject = Object;