mirror of
https://github.com/reactos/reactos.git
synced 2025-04-20 12:29:56 +00:00
[USB-BRINGUP]
- Create a pesudo random instance id - Fixes assert when plugin usb devices whose device descriptor don't provide a serial number svn path=/branches/usb-bringup/; revision=54836
This commit is contained in:
parent
874bc6a408
commit
4dc6e068e2
1 changed files with 22 additions and 0 deletions
|
@ -954,6 +954,28 @@ CreateDeviceIds(
|
||||||
UsbChildExtension->usInstanceId.MaximumLength = UsbChildExtension->usInstanceId.Length;
|
UsbChildExtension->usInstanceId.MaximumLength = UsbChildExtension->usInstanceId.Length;
|
||||||
DPRINT1("Usb InstanceId %wZ\n", &UsbChildExtension->usInstanceId);
|
DPRINT1("Usb InstanceId %wZ\n", &UsbChildExtension->usInstanceId);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//
|
||||||
|
// the device did not provide a serial number, lets create a pseudo instance id
|
||||||
|
//
|
||||||
|
Index = swprintf(BufferPtr, L"USB\\Vid_%04x&Pid_%04x&1A0700BC\0", UsbChildExtension->DeviceDesc.idVendor, UsbChildExtension->DeviceDesc.idProduct) + 1;
|
||||||
|
UsbChildExtension->usInstanceId.Buffer = (LPWSTR)ExAllocatePool(NonPagedPool, Index * sizeof(WCHAR));
|
||||||
|
if (UsbChildExtension->usInstanceId.Buffer == NULL)
|
||||||
|
{
|
||||||
|
DPRINT1("Error: failed to allocate %lu bytes\n", Index * sizeof(WCHAR));
|
||||||
|
goto Cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// copy instance id
|
||||||
|
//
|
||||||
|
RtlCopyMemory(UsbChildExtension->usInstanceId.Buffer, BufferPtr, wcslen(BufferPtr) * sizeof(WCHAR));
|
||||||
|
UsbChildExtension->usInstanceId.Length = UsbChildExtension->usDeviceId.MaximumLength = Index * sizeof(WCHAR);
|
||||||
|
|
||||||
|
DPRINT1("usDeviceId %wZ\n", &UsbChildExtension->usInstanceId);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
return Status;
|
return Status;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue