- Status = IoGetDeviceProperty(
- DeviceObject,
- DevicePropertyDeviceDescription,
- 0, NULL,
- &DescriptionSize);
- if (Status == STATUS_BUFFER_TOO_SMALL)
- {
- Description = ExAllocatePool(PagedPool, DescriptionSize);
- if (!Description)
- Status = STATUS_INSUFFICIENT_RESOURCES;
- else
- {
- Status = IoGetDeviceProperty(
- DeviceObject,
- DevicePropertyDeviceDescription,
- DescriptionSize, Description,
- &DescriptionSize);
- Information = DescriptionSize;
- }
- }
+ Status = RtlDuplicateUnicodeString(RTL_DUPLICATE_UNICODE_STRING_NULL_TERMINATE, &SourceString, &Description);
+ if (NT_SUCCESS(Status))
+ Information = (ULONG_PTR)Description.Buffer;