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)

Vedi anche