NTSTATUS Status;
WCHAR DeviceNameBuffer[32];
UNICODE_STRING DeviceName;
- static ULONG DeviceNumber = 0;
- static ULONG ComPortNumber = 1;
TRACE_(SERIAL, "SerialAddDeviceInternal()\n");
ASSERT(Pdo);
/* Create new device object */
- swprintf(DeviceNameBuffer, L"\\Device\\Serial%lu", DeviceNumber);
+ swprintf(DeviceNameBuffer, L"\\Device\\Serial%lu", IoGetConfigurationInformation()->SerialCount);
RtlInitUnicodeString(&DeviceName, DeviceNameBuffer);
Status = IoCreateDevice(DriverObject,
sizeof(SERIAL_DEVICE_EXTENSION),
goto ByeBye;
}
- DeviceExtension->SerialPortNumber = DeviceNumber++;
+ DeviceExtension->SerialPortNumber = IoGetConfigurationInformation()->SerialCount++;
if (pComPortNumber == NULL)
- DeviceExtension->ComPort = ComPortNumber++;
+ DeviceExtension->ComPort = DeviceExtension->SerialPortNumber + 1;
else
DeviceExtension->ComPort = *pComPortNumber;
DeviceExtension->Pdo = Pdo;
ComPortBase = ULongToPtr(DeviceExtension->BaseAddress);
/* Test if we are trying to start the serial port used for debugging */
- if (*KdComPortInUse == ULongToPtr(DeviceExtension->BaseAddress))
+ INFO_(SERIAL, "Comparing addresses: KdComPortInUse: %p, ComPortBase: %p\n", KdComPortInUse, ComPortBase);
+ if (KdComPortInUse == ComPortBase)
{
INFO_(SERIAL, "Failing IRP_MN_START_DEVICE as this serial port is used for debugging\n");
return STATUS_INSUFFICIENT_RESOURCES;