struttura USB_NODE_CONNECTION_INFORMATION_EX (usbioctl.h)
La struttura USB_NODE_CONNECTION_INFORMATION_EX viene utilizzata insieme alla richiesta di IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX per ottenere informazioni sulla connessione associata alla porta USB indicata.
Sintassi
typedef struct _USB_NODE_CONNECTION_INFORMATION_EX {
ULONG ConnectionIndex;
USB_DEVICE_DESCRIPTOR DeviceDescriptor;
UCHAR CurrentConfigurationValue;
UCHAR Speed;
BOOLEAN DeviceIsHub;
USHORT DeviceAddress;
ULONG NumberOfOpenPipes;
USB_CONNECTION_STATUS ConnectionStatus;
USB_PIPE_INFO PipeList[0];
} USB_NODE_CONNECTION_INFORMATION_EX, *PUSB_NODE_CONNECTION_INFORMATION_EX;
Members
ConnectionIndex
Contiene un valore maggiore o uguale a 1 che specifica il numero della porta.
DeviceDescriptor
Contiene una struttura di tipo USB_DEVICE_DESCRIPTOR che segnala il descrittore del dispositivo USB restituito dal dispositivo collegato durante l'enumerazione.
CurrentConfigurationValue
Contiene l'ID usato con la richiesta SetConfiguration per specificare la configurazione corrente del dispositivo connesso alla porta indicata. Per una spiegazione di questo valore, vedere la sezione 9.4.7 nella specifica Universal Serial Bus 3.1 disponibile nella raccolta documenti USB.
Speed
Contiene un valore di tipo USB_DEVICE_SPEED che indica la velocità del dispositivo.
DeviceIsHub
Indica, quando TRUE, il dispositivo collegato alla porta è un hub.
DeviceAddress
Contiene l'indirizzo usb assegnato, relativo al bus del dispositivo collegato alla porta.
NumberOfOpenPipes
Indica il numero di pipe USB aperte associate alla porta.
ConnectionStatus
Contiene un enumeratore di tipo USB_CONNECTION_STATUS che indica lo stato della connessione.
PipeList[0]
Contiene una matrice di strutture di tipo USB_PIPE_INFO che descrive le pipe aperte associate alla porta. Le descrizioni delle pipe includono l'offset di pianificazione della pipe e il descrittore di endpoint associato. Queste informazioni possono essere usate per calcolare l'utilizzo della larghezza di banda.
Commenti
Se non è connesso alcun dispositivo, IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX restituisce solo informazioni sulla porta. Se un dispositivo è connesso alla porta IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX restituisce informazioni sia sulla porta che sul dispositivo connesso.
La struttura USB_NODE_CONNECTION_INFORMATION_EX è una versione estesa di USB_NODE_CONNECTION_INFORMATION. Le due strutture sono identiche, ad eccezione di un membro. Nella struttura estesa il membro Speed indica la velocità del dispositivo.
Il membro Speed della struttura USB_NODE_CONNECTION_INFORMATION_EX è un UCHAR e può specificare uno qualsiasi dei valori dell'enumeratore USB_DEVICE_SPEED . Il membro Speed supporta fino a UsbHighSpeed (USB 2.0). Per determinare se un dispositivo supporta UsbSuperSpeed (USB 3.0), usare la struttura USB_NODE_CONNECTION_INFORMATION_EX_V2 .
Il frammento di codice C++ seguente dell'esempio USBView illustra come determinare se un dispositivo supporta UsbSuperSpeed (USB 3.0):
// Since the USB_NODE_CONNECTION_INFORMATION_EX is used to display
// the device speed, but the hub driver doesn't support indication
// of superspeed, we overwrite the value if the super speed
// data structures are available and indicate the device is operating
// at SuperSpeed.
if (connectionInfoEx->Speed == UsbHighSpeed
&& connectionInfoExV2 != NULL
&& (connectionInfoExV2->Flags.DeviceIsOperatingAtSuperSpeedOrHigher ||
connectionInfoExV2->Flags.DeviceIsOperatingAtSuperSpeedPlusOrHigher))
{
connectionInfoEx->Speed = UsbSuperSpeed;
}
Requisiti
Requisito | Valore |
---|---|
Intestazione | usbioctl.h (include Usbioctl.h) |