mirror of
https://github.com/reactos/reactos.git
synced 2025-07-27 21:22:24 +00:00
[USBPORT][USBHUB_NEW]
- Make use of the newly defined structures and constants and remove locally defined versions. Patch by Vadim Galyant. svn path=/trunk/; revision=75255
This commit is contained in:
parent
3db54fabc1
commit
b4533fa94a
7 changed files with 60 additions and 72 deletions
|
@ -250,7 +250,7 @@ USBH_PdoIoctlGetPortStatus(IN PUSBHUB_PORT_PDO_EXTENSION PortExtension,
|
||||||
Status = USBH_SyncGetPortStatus(HubExtension,
|
Status = USBH_SyncGetPortStatus(HubExtension,
|
||||||
PortExtension->PortNumber,
|
PortExtension->PortNumber,
|
||||||
&PortData->PortStatus,
|
&PortData->PortStatus,
|
||||||
sizeof(USBHUB_PORT_STATUS));
|
sizeof(USB_PORT_STATUS_AND_CHANGE));
|
||||||
|
|
||||||
IoStack = IoGetCurrentIrpStackLocation(Irp);
|
IoStack = IoGetCurrentIrpStackLocation(Irp);
|
||||||
PortStatus = IoStack->Parameters.Others.Argument1;
|
PortStatus = IoStack->Parameters.Others.Argument1;
|
||||||
|
@ -259,12 +259,12 @@ USBH_PdoIoctlGetPortStatus(IN PUSBHUB_PORT_PDO_EXTENSION PortExtension,
|
||||||
|
|
||||||
if (PortExtension->Common.SelfDevice == PortData->DeviceObject)
|
if (PortExtension->Common.SelfDevice == PortData->DeviceObject)
|
||||||
{
|
{
|
||||||
if (PortData->PortStatus.UsbPortStatus.Usb20PortStatus.PortEnabledDisabled)
|
if (PortData->PortStatus.PortStatus.Usb20PortStatus.PortEnabledDisabled)
|
||||||
{
|
{
|
||||||
*PortStatus |= USBD_PORT_ENABLED;
|
*PortStatus |= USBD_PORT_ENABLED;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (PortData->PortStatus.UsbPortStatus.Usb20PortStatus.CurrentConnectStatus)
|
if (PortData->PortStatus.PortStatus.Usb20PortStatus.CurrentConnectStatus)
|
||||||
{
|
{
|
||||||
*PortStatus |= USBD_PORT_CONNECTED;
|
*PortStatus |= USBD_PORT_CONNECTED;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1131,7 +1131,7 @@ EnumStart:
|
||||||
|
|
||||||
DPRINT_ENUM("USBH_FdoQueryBusRelations: Port - %x, ConnectStatus - %x\n",
|
DPRINT_ENUM("USBH_FdoQueryBusRelations: Port - %x, ConnectStatus - %x\n",
|
||||||
Port,
|
Port,
|
||||||
PortData->PortStatus.UsbPortStatus.Usb20PortStatus.CurrentConnectStatus);
|
PortData->PortStatus.PortStatus.Usb20PortStatus.CurrentConnectStatus);
|
||||||
|
|
||||||
if (HubExtension->HubFlags & USBHUB_FDO_FLAG_DEVICE_FAILED)
|
if (HubExtension->HubFlags & USBHUB_FDO_FLAG_DEVICE_FAILED)
|
||||||
{
|
{
|
||||||
|
@ -1141,7 +1141,7 @@ EnumStart:
|
||||||
Status = USBH_SyncGetPortStatus(HubExtension,
|
Status = USBH_SyncGetPortStatus(HubExtension,
|
||||||
Port,
|
Port,
|
||||||
&PortData->PortStatus,
|
&PortData->PortStatus,
|
||||||
sizeof(USBHUB_PORT_STATUS));
|
sizeof(USB_PORT_STATUS_AND_CHANGE));
|
||||||
|
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
|
@ -1158,7 +1158,7 @@ EnumStart:
|
||||||
|
|
||||||
if (PdoExtension->PortPdoFlags & USBHUB_PDO_FLAG_OVERCURRENT_PORT)
|
if (PdoExtension->PortPdoFlags & USBHUB_PDO_FLAG_OVERCURRENT_PORT)
|
||||||
{
|
{
|
||||||
PortData->PortStatus.UsbPortStatus.Usb20PortStatus.CurrentConnectStatus = 1;
|
PortData->PortStatus.PortStatus.Usb20PortStatus.CurrentConnectStatus = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1168,7 +1168,7 @@ EnumStart:
|
||||||
DbgBreakPoint();
|
DbgBreakPoint();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!PortData->PortStatus.UsbPortStatus.Usb20PortStatus.CurrentConnectStatus)
|
if (!PortData->PortStatus.PortStatus.Usb20PortStatus.CurrentConnectStatus)
|
||||||
{
|
{
|
||||||
if (PdoDevice)
|
if (PdoDevice)
|
||||||
{
|
{
|
||||||
|
@ -1233,9 +1233,9 @@ EnumStart:
|
||||||
NtStatus = USBH_SyncGetPortStatus(HubExtension,
|
NtStatus = USBH_SyncGetPortStatus(HubExtension,
|
||||||
Port,
|
Port,
|
||||||
&PortData->PortStatus,
|
&PortData->PortStatus,
|
||||||
sizeof(USBHUB_PORT_STATUS));
|
sizeof(USB_PORT_STATUS_AND_CHANGE));
|
||||||
|
|
||||||
UsbPortStatus = PortData->PortStatus.UsbPortStatus;
|
UsbPortStatus = PortData->PortStatus.PortStatus;
|
||||||
|
|
||||||
if (NT_SUCCESS(NtStatus))
|
if (NT_SUCCESS(NtStatus))
|
||||||
{
|
{
|
||||||
|
@ -1472,7 +1472,7 @@ USBH_FdoRemoveDevice(IN PUSBHUB_FDO_EXTENSION HubExtension,
|
||||||
|
|
||||||
if (PortDevice)
|
if (PortDevice)
|
||||||
{
|
{
|
||||||
PortData->PortStatus.AsULONG = 0;
|
PortData->PortStatus.AsUlong32 = 0;
|
||||||
PortData->DeviceObject = NULL;
|
PortData->DeviceObject = NULL;
|
||||||
|
|
||||||
PortExtension = PortDevice->DeviceExtension;
|
PortExtension = PortDevice->DeviceExtension;
|
||||||
|
@ -2064,7 +2064,7 @@ USBH_RestoreDevice(IN PUSBHUB_PORT_PDO_EXTENSION PortExtension,
|
||||||
Status = USBH_SyncGetPortStatus(HubExtension,
|
Status = USBH_SyncGetPortStatus(HubExtension,
|
||||||
PortExtension->PortNumber,
|
PortExtension->PortNumber,
|
||||||
&PortData->PortStatus,
|
&PortData->PortStatus,
|
||||||
sizeof(USBHUB_PORT_STATUS));
|
sizeof(USB_PORT_STATUS_AND_CHANGE));
|
||||||
|
|
||||||
if (NT_SUCCESS(Status))
|
if (NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
|
|
|
@ -464,7 +464,7 @@ NTAPI
|
||||||
USBH_SyncResetPort(IN PUSBHUB_FDO_EXTENSION HubExtension,
|
USBH_SyncResetPort(IN PUSBHUB_FDO_EXTENSION HubExtension,
|
||||||
IN USHORT Port)
|
IN USHORT Port)
|
||||||
{
|
{
|
||||||
USBHUB_PORT_STATUS PortStatus;
|
USB_PORT_STATUS_AND_CHANGE PortStatus;
|
||||||
KEVENT Event;
|
KEVENT Event;
|
||||||
LARGE_INTEGER Timeout;
|
LARGE_INTEGER Timeout;
|
||||||
ULONG ResetRetry = 0;
|
ULONG ResetRetry = 0;
|
||||||
|
@ -483,10 +483,10 @@ USBH_SyncResetPort(IN PUSBHUB_FDO_EXTENSION HubExtension,
|
||||||
Status = USBH_SyncGetPortStatus(HubExtension,
|
Status = USBH_SyncGetPortStatus(HubExtension,
|
||||||
Port,
|
Port,
|
||||||
&PortStatus,
|
&PortStatus,
|
||||||
sizeof(USBHUB_PORT_STATUS));
|
sizeof(USB_PORT_STATUS_AND_CHANGE));
|
||||||
|
|
||||||
if (NT_SUCCESS(Status) &&
|
if (NT_SUCCESS(Status) &&
|
||||||
(PortStatus.UsbPortStatus.Usb20PortStatus.CurrentConnectStatus == 0))
|
(PortStatus.PortStatus.Usb20PortStatus.CurrentConnectStatus == 0))
|
||||||
{
|
{
|
||||||
Status = STATUS_UNSUCCESSFUL;
|
Status = STATUS_UNSUCCESSFUL;
|
||||||
goto Exit;
|
goto Exit;
|
||||||
|
@ -545,10 +545,10 @@ USBH_SyncResetPort(IN PUSBHUB_FDO_EXTENSION HubExtension,
|
||||||
Status = USBH_SyncGetPortStatus(HubExtension,
|
Status = USBH_SyncGetPortStatus(HubExtension,
|
||||||
Port,
|
Port,
|
||||||
&PortStatus,
|
&PortStatus,
|
||||||
sizeof(USBHUB_PORT_STATUS));
|
sizeof(USB_PORT_STATUS_AND_CHANGE));
|
||||||
|
|
||||||
if (!NT_SUCCESS(Status) ||
|
if (!NT_SUCCESS(Status) ||
|
||||||
(PortStatus.UsbPortStatus.Usb20PortStatus.CurrentConnectStatus == 0) ||
|
(PortStatus.PortStatus.Usb20PortStatus.CurrentConnectStatus == 0) ||
|
||||||
ResetRetry >= USBHUB_RESET_PORT_MAX_RETRY)
|
ResetRetry >= USBHUB_RESET_PORT_MAX_RETRY)
|
||||||
{
|
{
|
||||||
InterlockedExchangePointer((PVOID)&HubExtension->pResetPortEvent,
|
InterlockedExchangePointer((PVOID)&HubExtension->pResetPortEvent,
|
||||||
|
@ -567,9 +567,9 @@ USBH_SyncResetPort(IN PUSBHUB_FDO_EXTENSION HubExtension,
|
||||||
Status = USBH_SyncGetPortStatus(HubExtension,
|
Status = USBH_SyncGetPortStatus(HubExtension,
|
||||||
Port,
|
Port,
|
||||||
&PortStatus,
|
&PortStatus,
|
||||||
sizeof(USBHUB_PORT_STATUS));
|
sizeof(USB_PORT_STATUS_AND_CHANGE));
|
||||||
|
|
||||||
if ((PortStatus.UsbPortStatus.Usb20PortStatus.CurrentConnectStatus == 0) &&
|
if ((PortStatus.PortStatus.Usb20PortStatus.CurrentConnectStatus == 0) &&
|
||||||
NT_SUCCESS(Status) &&
|
NT_SUCCESS(Status) &&
|
||||||
HubExtension->HubFlags & USBHUB_FDO_FLAG_USB20_HUB)
|
HubExtension->HubFlags & USBHUB_FDO_FLAG_USB20_HUB)
|
||||||
{
|
{
|
||||||
|
@ -1156,7 +1156,7 @@ USBH_SyncGetHubDescriptor(IN PUSBHUB_FDO_EXTENSION HubExtension)
|
||||||
|
|
||||||
for (ix = 0; ix < NumberPorts; ix++)
|
for (ix = 0; ix < NumberPorts; ix++)
|
||||||
{
|
{
|
||||||
PortData[ix].PortStatus.AsULONG = 0;
|
PortData[ix].PortStatus.AsUlong32 = 0;
|
||||||
|
|
||||||
if (ExtendedHubInfo)
|
if (ExtendedHubInfo)
|
||||||
{
|
{
|
||||||
|
@ -1355,7 +1355,7 @@ NTSTATUS
|
||||||
NTAPI
|
NTAPI
|
||||||
USBH_SyncGetPortStatus(IN PUSBHUB_FDO_EXTENSION HubExtension,
|
USBH_SyncGetPortStatus(IN PUSBHUB_FDO_EXTENSION HubExtension,
|
||||||
IN USHORT Port,
|
IN USHORT Port,
|
||||||
IN PUSBHUB_PORT_STATUS PortStatus,
|
IN PUSB_PORT_STATUS_AND_CHANGE PortStatus,
|
||||||
IN ULONG Length)
|
IN ULONG Length)
|
||||||
{
|
{
|
||||||
BM_REQUEST_TYPE RequestType;
|
BM_REQUEST_TYPE RequestType;
|
||||||
|
@ -1417,7 +1417,7 @@ USBH_SyncPowerOnPort(IN PUSBHUB_FDO_EXTENSION HubExtension,
|
||||||
PUSB_HUB_DESCRIPTOR HubDescriptor;
|
PUSB_HUB_DESCRIPTOR HubDescriptor;
|
||||||
NTSTATUS Status = STATUS_SUCCESS;
|
NTSTATUS Status = STATUS_SUCCESS;
|
||||||
BM_REQUEST_TYPE RequestType;
|
BM_REQUEST_TYPE RequestType;
|
||||||
PUSBHUB_PORT_STATUS PortStatus;
|
PUSB_PORT_STATUS_AND_CHANGE PortStatus;
|
||||||
|
|
||||||
DPRINT("USBH_SyncPowerOnPort: Port - %x, IsWait - %x\n", Port, IsWait);
|
DPRINT("USBH_SyncPowerOnPort: Port - %x, IsWait - %x\n", Port, IsWait);
|
||||||
|
|
||||||
|
@ -1425,7 +1425,7 @@ USBH_SyncPowerOnPort(IN PUSBHUB_FDO_EXTENSION HubExtension,
|
||||||
PortData = &HubExtension->PortData[Port - 1];
|
PortData = &HubExtension->PortData[Port - 1];
|
||||||
PortStatus = &PortData->PortStatus;
|
PortStatus = &PortData->PortStatus;
|
||||||
|
|
||||||
if (PortStatus->UsbPortStatus.Usb20PortStatus.CurrentConnectStatus == 1)
|
if (PortStatus->PortStatus.Usb20PortStatus.CurrentConnectStatus == 1)
|
||||||
{
|
{
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
@ -1453,7 +1453,7 @@ USBH_SyncPowerOnPort(IN PUSBHUB_FDO_EXTENSION HubExtension,
|
||||||
USBH_Wait(2 * HubDescriptor->bPowerOnToPowerGood);
|
USBH_Wait(2 * HubDescriptor->bPowerOnToPowerGood);
|
||||||
}
|
}
|
||||||
|
|
||||||
PortStatus->UsbPortStatus.Usb20PortStatus.CurrentConnectStatus = 1;
|
PortStatus->PortStatus.Usb20PortStatus.CurrentConnectStatus = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return Status;
|
return Status;
|
||||||
|
@ -1520,7 +1520,7 @@ USBH_SyncDisablePort(IN PUSBHUB_FDO_EXTENSION HubExtension,
|
||||||
|
|
||||||
if (NT_SUCCESS(Status))
|
if (NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
PortData->PortStatus.UsbPortStatus.Usb20PortStatus.PortEnabledDisabled = 0;
|
PortData->PortStatus.PortStatus.Usb20PortStatus.PortEnabledDisabled = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return Status;
|
return Status;
|
||||||
|
@ -1660,12 +1660,12 @@ USBH_ChangeIndicationProcessChange(IN PDEVICE_OBJECT DeviceObject,
|
||||||
HubExtension = Context;
|
HubExtension = Context;
|
||||||
|
|
||||||
DPRINT_SCE("USBH_ChangeIndicationProcessChange: PortStatus - %lX\n",
|
DPRINT_SCE("USBH_ChangeIndicationProcessChange: PortStatus - %lX\n",
|
||||||
HubExtension->PortStatus.AsULONG);
|
HubExtension->PortStatus.AsUlong32);
|
||||||
|
|
||||||
if ((NT_SUCCESS(Irp->IoStatus.Status) ||
|
if ((NT_SUCCESS(Irp->IoStatus.Status) ||
|
||||||
USBD_SUCCESS(HubExtension->SCEWorkerUrb.Hdr.Status)) &&
|
USBD_SUCCESS(HubExtension->SCEWorkerUrb.Hdr.Status)) &&
|
||||||
(HubExtension->PortStatus.UsbPortStatusChange.ResetChange ||
|
(HubExtension->PortStatus.PortChange.Usb20PortChange.ResetChange ||
|
||||||
HubExtension->PortStatus.UsbPortStatusChange.PortEnableDisableChange))
|
HubExtension->PortStatus.PortChange.Usb20PortChange.PortEnableDisableChange))
|
||||||
{
|
{
|
||||||
if (!InterlockedDecrement(&HubExtension->PendingRequestCount))
|
if (!InterlockedDecrement(&HubExtension->PendingRequestCount))
|
||||||
{
|
{
|
||||||
|
@ -1678,7 +1678,7 @@ USBH_ChangeIndicationProcessChange(IN PDEVICE_OBJECT DeviceObject,
|
||||||
|
|
||||||
HubExtension->WorkItemToQueue = NULL;
|
HubExtension->WorkItemToQueue = NULL;
|
||||||
|
|
||||||
if (HubExtension->PortStatus.UsbPortStatusChange.ResetChange)
|
if (HubExtension->PortStatus.PortChange.Usb20PortChange.ResetChange)
|
||||||
{
|
{
|
||||||
RequestValue = USBHUB_FEATURE_C_PORT_RESET;
|
RequestValue = USBHUB_FEATURE_C_PORT_RESET;
|
||||||
}
|
}
|
||||||
|
@ -1782,10 +1782,10 @@ VOID
|
||||||
NTAPI
|
NTAPI
|
||||||
USBH_ProcessPortStateChange(IN PUSBHUB_FDO_EXTENSION HubExtension,
|
USBH_ProcessPortStateChange(IN PUSBHUB_FDO_EXTENSION HubExtension,
|
||||||
IN USHORT Port,
|
IN USHORT Port,
|
||||||
IN PUSBHUB_PORT_STATUS PortStatus)
|
IN PUSB_PORT_STATUS_AND_CHANGE PortStatus)
|
||||||
{
|
{
|
||||||
PUSBHUB_PORT_DATA PortData;
|
PUSBHUB_PORT_DATA PortData;
|
||||||
USB_PORT_STATUS_CHANGE PortStatusChange;
|
USB_20_PORT_CHANGE PortStatusChange;
|
||||||
PDEVICE_OBJECT PortDevice;
|
PDEVICE_OBJECT PortDevice;
|
||||||
PUSBHUB_PORT_PDO_EXTENSION PortExtension;
|
PUSBHUB_PORT_PDO_EXTENSION PortExtension;
|
||||||
PVOID SerialNumber;
|
PVOID SerialNumber;
|
||||||
|
@ -1798,11 +1798,11 @@ USBH_ProcessPortStateChange(IN PUSBHUB_FDO_EXTENSION HubExtension,
|
||||||
ASSERT(Port > 0);
|
ASSERT(Port > 0);
|
||||||
PortData = &HubExtension->PortData[Port - 1];
|
PortData = &HubExtension->PortData[Port - 1];
|
||||||
|
|
||||||
PortStatusChange = PortStatus->UsbPortStatusChange;
|
PortStatusChange = PortStatus->PortChange.Usb20PortChange;
|
||||||
|
|
||||||
if (PortStatusChange.ConnectStatusChange)
|
if (PortStatusChange.ConnectStatusChange)
|
||||||
{
|
{
|
||||||
PortData->PortStatus.AsULONG = *(PULONG)PortStatus;
|
PortData->PortStatus = *PortStatus;
|
||||||
|
|
||||||
USBH_SyncClearPortStatus(HubExtension,
|
USBH_SyncClearPortStatus(HubExtension,
|
||||||
Port,
|
Port,
|
||||||
|
@ -2062,7 +2062,7 @@ USBH_ChangeIndicationWorker(IN PUSBHUB_FDO_EXTENSION HubExtension,
|
||||||
PUSBHUB_FDO_EXTENSION LowerHubExtension;
|
PUSBHUB_FDO_EXTENSION LowerHubExtension;
|
||||||
PUSBHUB_PORT_PDO_EXTENSION LowerPortExtension;
|
PUSBHUB_PORT_PDO_EXTENSION LowerPortExtension;
|
||||||
PUSBHUB_STATUS_CHANGE_CONTEXT WorkItem;
|
PUSBHUB_STATUS_CHANGE_CONTEXT WorkItem;
|
||||||
USBHUB_PORT_STATUS PortStatus;
|
USB_PORT_STATUS_AND_CHANGE PortStatus;
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
USHORT Port = 0;
|
USHORT Port = 0;
|
||||||
|
|
||||||
|
@ -2115,10 +2115,10 @@ USBH_ChangeIndicationWorker(IN PUSBHUB_FDO_EXTENSION HubExtension,
|
||||||
Status = USBH_SyncGetPortStatus(LowerHubExtension,
|
Status = USBH_SyncGetPortStatus(LowerHubExtension,
|
||||||
LowerPortExtension->PortNumber,
|
LowerPortExtension->PortNumber,
|
||||||
&PortStatus,
|
&PortStatus,
|
||||||
sizeof(USBHUB_PORT_STATUS));
|
sizeof(USB_PORT_STATUS_AND_CHANGE));
|
||||||
|
|
||||||
if (!NT_SUCCESS(Status) ||
|
if (!NT_SUCCESS(Status) ||
|
||||||
!PortStatus.UsbPortStatus.Usb20PortStatus.CurrentConnectStatus)
|
!PortStatus.PortStatus.Usb20PortStatus.CurrentConnectStatus)
|
||||||
{
|
{
|
||||||
HubExtension->HubFlags |= USBHUB_FDO_FLAG_DEVICE_REMOVED;
|
HubExtension->HubFlags |= USBHUB_FDO_FLAG_DEVICE_REMOVED;
|
||||||
|
|
||||||
|
@ -2162,7 +2162,7 @@ Enum:
|
||||||
Status = USBH_SyncGetPortStatus(HubExtension,
|
Status = USBH_SyncGetPortStatus(HubExtension,
|
||||||
Port,
|
Port,
|
||||||
&PortStatus,
|
&PortStatus,
|
||||||
sizeof(USBHUB_PORT_STATUS));
|
sizeof(USB_PORT_STATUS_AND_CHANGE));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -4537,7 +4537,7 @@ USBH_ResetDevice(IN PUSBHUB_FDO_EXTENSION HubExtension,
|
||||||
PVOID Handle;
|
PVOID Handle;
|
||||||
PVOID OldDeviceHandle;
|
PVOID OldDeviceHandle;
|
||||||
PUSB_DEVICE_HANDLE * DeviceHandle;
|
PUSB_DEVICE_HANDLE * DeviceHandle;
|
||||||
USBHUB_PORT_STATUS PortStatus;
|
USB_PORT_STATUS_AND_CHANGE PortStatus;
|
||||||
|
|
||||||
DPRINT("USBH_ResetDevice: HubExtension - %p, Port - %x, IsKeepDeviceData - %x, IsWait - %x\n",
|
DPRINT("USBH_ResetDevice: HubExtension - %p, Port - %x, IsKeepDeviceData - %x, IsWait - %x\n",
|
||||||
HubExtension,
|
HubExtension,
|
||||||
|
@ -4548,10 +4548,10 @@ USBH_ResetDevice(IN PUSBHUB_FDO_EXTENSION HubExtension,
|
||||||
Status = USBH_SyncGetPortStatus(HubExtension,
|
Status = USBH_SyncGetPortStatus(HubExtension,
|
||||||
Port,
|
Port,
|
||||||
&PortStatus,
|
&PortStatus,
|
||||||
sizeof(USBHUB_PORT_STATUS));
|
sizeof(USB_PORT_STATUS_AND_CHANGE));
|
||||||
|
|
||||||
if (!NT_SUCCESS(Status) ||
|
if (!NT_SUCCESS(Status) ||
|
||||||
!(PortStatus.UsbPortStatus.Usb20PortStatus.CurrentConnectStatus))
|
!(PortStatus.PortStatus.Usb20PortStatus.CurrentConnectStatus))
|
||||||
{
|
{
|
||||||
return STATUS_UNSUCCESSFUL;
|
return STATUS_UNSUCCESSFUL;
|
||||||
}
|
}
|
||||||
|
@ -4625,7 +4625,7 @@ USBH_ResetDevice(IN PUSBHUB_FDO_EXTENSION HubExtension,
|
||||||
Status = USBH_SyncGetPortStatus(HubExtension,
|
Status = USBH_SyncGetPortStatus(HubExtension,
|
||||||
Port,
|
Port,
|
||||||
&PortStatus,
|
&PortStatus,
|
||||||
sizeof(USBHUB_PORT_STATUS));
|
sizeof(USB_PORT_STATUS_AND_CHANGE));
|
||||||
|
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
|
@ -4634,7 +4634,7 @@ USBH_ResetDevice(IN PUSBHUB_FDO_EXTENSION HubExtension,
|
||||||
|
|
||||||
Status = USBD_CreateDeviceEx(HubExtension,
|
Status = USBD_CreateDeviceEx(HubExtension,
|
||||||
DeviceHandle,
|
DeviceHandle,
|
||||||
PortStatus.UsbPortStatus,
|
PortStatus.PortStatus,
|
||||||
Port);
|
Port);
|
||||||
|
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
|
|
|
@ -108,7 +108,7 @@
|
||||||
extern PWSTR GenericUSBDeviceString;
|
extern PWSTR GenericUSBDeviceString;
|
||||||
|
|
||||||
typedef struct _USBHUB_PORT_DATA {
|
typedef struct _USBHUB_PORT_DATA {
|
||||||
USBHUB_PORT_STATUS PortStatus;
|
USB_PORT_STATUS_AND_CHANGE PortStatus;
|
||||||
PDEVICE_OBJECT DeviceObject;
|
PDEVICE_OBJECT DeviceObject;
|
||||||
USB_CONNECTION_STATUS ConnectionStatus;
|
USB_CONNECTION_STATUS ConnectionStatus;
|
||||||
ULONG PortAttributes;
|
ULONG PortAttributes;
|
||||||
|
@ -189,7 +189,7 @@ typedef struct _USBHUB_FDO_EXTENSION {
|
||||||
KSEMAPHORE HubSemaphore;
|
KSEMAPHORE HubSemaphore;
|
||||||
PUSBHUB_IO_WORK_ITEM WorkItemToQueue;
|
PUSBHUB_IO_WORK_ITEM WorkItemToQueue;
|
||||||
USB_IDLE_CALLBACK_INFO IdleCallbackInfo;
|
USB_IDLE_CALLBACK_INFO IdleCallbackInfo;
|
||||||
USBHUB_PORT_STATUS PortStatus;
|
USB_PORT_STATUS_AND_CHANGE PortStatus;
|
||||||
PIRP PowerIrp;
|
PIRP PowerIrp;
|
||||||
} USBHUB_FDO_EXTENSION, *PUSBHUB_FDO_EXTENSION;
|
} USBHUB_FDO_EXTENSION, *PUSBHUB_FDO_EXTENSION;
|
||||||
|
|
||||||
|
@ -480,7 +480,7 @@ NTAPI
|
||||||
USBH_SyncGetPortStatus(
|
USBH_SyncGetPortStatus(
|
||||||
IN PUSBHUB_FDO_EXTENSION HubExtension,
|
IN PUSBHUB_FDO_EXTENSION HubExtension,
|
||||||
IN USHORT Port,
|
IN USHORT Port,
|
||||||
IN PUSBHUB_PORT_STATUS PortStatus,
|
IN PUSB_PORT_STATUS_AND_CHANGE PortStatus,
|
||||||
IN ULONG Length);
|
IN ULONG Length);
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
|
|
|
@ -421,7 +421,7 @@ USBHI_GetExtendedHubInformation(IN PVOID BusContext,
|
||||||
ULONG NumPorts;
|
ULONG NumPorts;
|
||||||
ULONG ix;
|
ULONG ix;
|
||||||
PUSB_EXTHUB_INFORMATION_0 HubInfoBuffer;
|
PUSB_EXTHUB_INFORMATION_0 HubInfoBuffer;
|
||||||
USBHUB_PORT_STATUS PortStatus;
|
USB_PORT_STATUS_AND_CHANGE PortStatus;
|
||||||
ULONG PortAttrX;
|
ULONG PortAttrX;
|
||||||
|
|
||||||
DPRINT("USBHI_GetExtendedHubInformation: ... \n");
|
DPRINT("USBHI_GetExtendedHubInformation: ... \n");
|
||||||
|
@ -433,7 +433,7 @@ USBHI_GetExtendedHubInformation(IN PVOID BusContext,
|
||||||
Packet = &FdoExtension->MiniPortInterface->Packet;
|
Packet = &FdoExtension->MiniPortInterface->Packet;
|
||||||
|
|
||||||
HubInfoBuffer = HubInformationBuffer;
|
HubInfoBuffer = HubInformationBuffer;
|
||||||
PortStatus.AsULONG = 0;
|
PortStatus.AsUlong32 = 0;
|
||||||
|
|
||||||
if (HubPhysicalDeviceObject != PdoDevice)
|
if (HubPhysicalDeviceObject != PdoDevice)
|
||||||
{
|
{
|
||||||
|
@ -472,7 +472,7 @@ USBHI_GetExtendedHubInformation(IN PVOID BusContext,
|
||||||
ix,
|
ix,
|
||||||
&PortStatus);
|
&PortStatus);
|
||||||
|
|
||||||
if (PortStatus.UsbPortStatus.Usb20PortStatus.AsUshort16 & 0x8000)
|
if (PortStatus.PortStatus.Usb20PortStatus.AsUshort16 & 0x8000)
|
||||||
{
|
{
|
||||||
HubInfoBuffer->Port[ix].PortAttributes |= USB_PORTATTR_OWNED_BY_CC;
|
HubInfoBuffer->Port[ix].PortAttributes |= USB_PORTATTR_OWNED_BY_CC;
|
||||||
}
|
}
|
||||||
|
|
|
@ -534,7 +534,7 @@ USBPORT_RootHubSCE(IN PUSBPORT_TRANSFER Transfer)
|
||||||
PUSBPORT_RHDEVICE_EXTENSION PdoExtension;
|
PUSBPORT_RHDEVICE_EXTENSION PdoExtension;
|
||||||
PUSBPORT_REGISTRATION_PACKET Packet;
|
PUSBPORT_REGISTRATION_PACKET Packet;
|
||||||
ULONG TransferLength;
|
ULONG TransferLength;
|
||||||
USBHUB_PORT_STATUS PortStatus;
|
USB_PORT_STATUS_AND_CHANGE PortStatus;
|
||||||
USB_HUB_STATUS_AND_CHANGE HubStatus;
|
USB_HUB_STATUS_AND_CHANGE HubStatus;
|
||||||
PVOID Buffer;
|
PVOID Buffer;
|
||||||
PULONG AddressBitMap;
|
PULONG AddressBitMap;
|
||||||
|
@ -555,7 +555,7 @@ USBPORT_RootHubSCE(IN PUSBPORT_TRANSFER Transfer)
|
||||||
HubDescriptor = &PdoExtension->RootHubDescriptors->Descriptor;
|
HubDescriptor = &PdoExtension->RootHubDescriptors->Descriptor;
|
||||||
NumberOfPorts = HubDescriptor->bNumberOfPorts;
|
NumberOfPorts = HubDescriptor->bNumberOfPorts;
|
||||||
|
|
||||||
PortStatus.AsULONG = 0;
|
PortStatus.AsUlong32 = 0;
|
||||||
HubStatus.AsUlong32 = 0;
|
HubStatus.AsUlong32 = 0;
|
||||||
|
|
||||||
Urb = Transfer->Urb;
|
Urb = Transfer->Urb;
|
||||||
|
@ -608,11 +608,11 @@ USBPORT_RootHubSCE(IN PUSBPORT_TRANSFER Transfer)
|
||||||
return RH_STATUS_UNSUCCESSFUL;
|
return RH_STATUS_UNSUCCESSFUL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (PortStatus.UsbPortStatusChange.ConnectStatusChange ||
|
if (PortStatus.PortChange.Usb20PortChange.ConnectStatusChange ||
|
||||||
PortStatus.UsbPortStatusChange.PortEnableDisableChange ||
|
PortStatus.PortChange.Usb20PortChange.PortEnableDisableChange ||
|
||||||
PortStatus.UsbPortStatusChange.SuspendChange ||
|
PortStatus.PortChange.Usb20PortChange.SuspendChange ||
|
||||||
PortStatus.UsbPortStatusChange.OverCurrentIndicatorChange ||
|
PortStatus.PortChange.Usb20PortChange.OverCurrentIndicatorChange ||
|
||||||
PortStatus.UsbPortStatusChange.ResetChange)
|
PortStatus.PortChange.Usb20PortChange.ResetChange)
|
||||||
{
|
{
|
||||||
/* At the port status there is a change */
|
/* At the port status there is a change */
|
||||||
AddressBitMap[Port >> 5] |= 1 << (Port & 0x1F);
|
AddressBitMap[Port >> 5] |= 1 << (Port & 0x1F);
|
||||||
|
@ -858,11 +858,11 @@ USBPORT_RootHubCreateDevice(IN PDEVICE_OBJECT FdoDevice,
|
||||||
Packet->MiniPortVersion == USB_MINIPORT_VERSION_UHCI ||
|
Packet->MiniPortVersion == USB_MINIPORT_VERSION_UHCI ||
|
||||||
Packet->MiniPortVersion == USB_MINIPORT_VERSION_EHCI)
|
Packet->MiniPortVersion == USB_MINIPORT_VERSION_EHCI)
|
||||||
{
|
{
|
||||||
RH_HubDescriptor->bDescriptorType = 0x29; // #define USB_20_HUB_DESCRIPTOR_TYPE 0x29 - need add in .h file
|
RH_HubDescriptor->bDescriptorType = USB_20_HUB_DESCRIPTOR_TYPE;
|
||||||
}
|
}
|
||||||
else if (Packet->MiniPortVersion == USB_MINIPORT_VERSION_XHCI)
|
else if (Packet->MiniPortVersion == USB_MINIPORT_VERSION_XHCI)
|
||||||
{
|
{
|
||||||
RH_HubDescriptor->bDescriptorType = 0x2A; // #define USB_30_HUB_DESCRIPTOR_TYPE 0x2A - need add in .h file
|
RH_HubDescriptor->bDescriptorType = USB_30_HUB_DESCRIPTOR_TYPE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -923,9 +923,9 @@ USBPORT_InvalidateRootHub(PVOID Context)
|
||||||
FdoDevice = FdoExtension->CommonExtension.SelfDevice;
|
FdoDevice = FdoExtension->CommonExtension.SelfDevice;
|
||||||
|
|
||||||
if (FdoExtension->Flags & USBPORT_FLAG_HC_SUSPEND &&
|
if (FdoExtension->Flags & USBPORT_FLAG_HC_SUSPEND &&
|
||||||
FdoExtension->Flags & USBPORT_FLAG_HC_WAKE_SUPPORT &&
|
FdoExtension->Flags & USBPORT_FLAG_HC_WAKE_SUPPORT &&
|
||||||
FdoExtension->MiniPortFlags & USBPORT_MPFLAG_SUSPENDED &&
|
FdoExtension->MiniPortFlags & USBPORT_MPFLAG_SUSPENDED &&
|
||||||
FdoExtension->TimerFlags & USBPORT_TMFLAG_WAKE)
|
FdoExtension->TimerFlags & USBPORT_TMFLAG_WAKE)
|
||||||
{
|
{
|
||||||
USBPORT_HcQueueWakeDpc(FdoDevice);
|
USBPORT_HcQueueWakeDpc(FdoDevice);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -66,19 +66,7 @@ typedef ULONG RHSTATUS; // Roothub status
|
||||||
#define RH_STATUS_NO_CHANGES 1
|
#define RH_STATUS_NO_CHANGES 1
|
||||||
#define RH_STATUS_UNSUCCESSFUL 2
|
#define RH_STATUS_UNSUCCESSFUL 2
|
||||||
|
|
||||||
typedef USB_20_PORT_CHANGE USB_PORT_STATUS_CHANGE;
|
|
||||||
|
|
||||||
typedef union _USBHUB_PORT_STATUS {
|
|
||||||
struct {
|
|
||||||
USB_PORT_STATUS UsbPortStatus;
|
|
||||||
USB_PORT_STATUS_CHANGE UsbPortStatusChange;
|
|
||||||
};
|
|
||||||
ULONG AsULONG;
|
|
||||||
} USBHUB_PORT_STATUS, *PUSBHUB_PORT_STATUS;
|
|
||||||
|
|
||||||
/* Additional USB Class Codes from USB.org */
|
/* Additional USB Class Codes from USB.org */
|
||||||
#define USBC_DEVICE_CLASS_AUDIO_VIDEO 0x10
|
|
||||||
#define USBC_DEVICE_CLASS_BILLBOARD 0x11
|
|
||||||
#define USBC_DEVICE_CLASS_TYPE_C_BRIDGE 0x12
|
#define USBC_DEVICE_CLASS_TYPE_C_BRIDGE 0x12
|
||||||
|
|
||||||
/* Miniport functions */
|
/* Miniport functions */
|
||||||
|
@ -222,7 +210,7 @@ typedef MPSTATUS
|
||||||
(NTAPI *PHCI_RH_GET_PORT_STATUS)(
|
(NTAPI *PHCI_RH_GET_PORT_STATUS)(
|
||||||
PVOID,
|
PVOID,
|
||||||
USHORT,
|
USHORT,
|
||||||
PUSBHUB_PORT_STATUS);
|
PUSB_PORT_STATUS_AND_CHANGE);
|
||||||
|
|
||||||
typedef MPSTATUS
|
typedef MPSTATUS
|
||||||
(NTAPI *PHCI_RH_GET_HUB_STATUS)(
|
(NTAPI *PHCI_RH_GET_HUB_STATUS)(
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue