[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:
Thomas Faber 2017-07-01 06:22:27 +00:00
parent 3db54fabc1
commit b4533fa94a
7 changed files with 60 additions and 72 deletions

View file

@ -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;
} }

View file

@ -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))
{ {

View file

@ -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))

View file

@ -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

View file

@ -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;
} }

View file

@ -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;

View file

@ -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)(