_URB_CONTROL_TRANSFER_EX-Struktur (usb.h)
Die _URB_CONTROL_TRANSFER_EX-Struktur wird von USB-Clienttreibern verwendet, um Daten an oder aus einer Steuerpipe zu übertragen, mit einem Timeout, das die akzeptable Übertragungszeit begrenzt.
Syntax
struct _URB_CONTROL_TRANSFER_EX {
struct _URB_HEADER Hdr;
USBD_PIPE_HANDLE PipeHandle;
ULONG TransferFlags;
ULONG TransferBufferLength;
PVOID TransferBuffer;
PMDL TransferBufferMDL;
ULONG Timeout;
ULONG Pad;
struct _URB_HCD_AREA hca;
UCHAR SetupPacket[8];
};
Member
Hdr
Zeiger auf eine _URB_HEADER-Struktur , die die URB-Headerinformationen angibt. Hdr.Function muss URB_FUNCTION_CONTROL_TRANSFER_EX sein, und Hdr.Length muss sein sizeof(_URB_CONTROL_TRANSFER_EX)
.
PipeHandle
Handle für die Pipe.
Wenn target der Standardendpunkt für die Steuerung ist, muss PipeHandleNULL sein. In diesem Fall müssen die TransferFlags das flag USBD_DEFAULT_PIPE_TRANSFER enthalten.
Wenn target ein nicht standardmäßiger Steuerelementendpunkt ist, gibt PipeHandle ein undurchsichtiges Handle für die Steuerelementpipe an. Der Hostcontrollertreiber gibt dieses Handle zurück, wenn der Clienttreiber die Gerätekonfiguration mit einer URB vom Typ URB_FUNCTION_SELECT_CONFIGURATION auswählt oder wenn der Clienttreiber die Einstellungen für eine Schnittstelle mit einer URB vom Typ URB_FUNCTION_SELECT_INTERFACE ändert.
TransferFlags
Gibt null, eins oder eine Kombination der folgenden Flags an:
Wert | Bedeutung |
---|---|
|
Ist so festgelegt, dass Daten von einem Gerät angefordert werden. Um Daten auf ein Gerät zu übertragen, muss dieses Flag eindeutig sein. |
|
Ist so festgelegt, dass Daten auf ein Gerät übertragen werden. Das Festlegen dieses Flags entspricht dem Löschen des USBD_TRANSFER_DIRECTION_IN Flags. |
|
Ist so festgelegt, dass der Hostcontroller anweisen soll, keinen Fehler zurückzugeben, wenn er ein Paket vom Gerät empfängt, das kürzer als die maximale Paketgröße für den Endpunkt ist. Die maximale Paketgröße für den Endpunkt wird im bMaxPacketSize0-Member der USB_DEVICE_DESCRIPTOR-Struktur (Gerätedeskriptor) für den Standardsteuerelementendpunkt gemeldet. Für einen nicht standardmäßigen Steuerelementendpunkt wird die maximale Paketgröße im wMaxPacketSize-Member der USB_ENDPOINT_DESCRIPTOR-Struktur (Endpunktdeskriptor) festgelegt.
Wenn der Hostcontroller ein Paket empfängt, dessen Länge kürzer als der wMaxPacketSize-Wert auf einem Steuerelementendpunkt ist, verhält sich das Verhalten abhängig vom Typ des Hostcontrollers wie folgt:
|
|
Ist so festgelegt, dass der Hostcontroller eine Steuerungsübertragung über die Standard-Steuerelementpipe durchführt. Dadurch kann der Aufrufer Befehle an die Standard-Steuerelementpipe senden, ohne das Pipehandle explizit anzugeben. |
TransferBufferLength
Gibt die Länge des in TransferBuffer angegebenen oder in TransferBufferMDL beschriebenen Puffers in Bytes an. Der Hostcontrollertreiber gibt die Anzahl der Bytes zurück, die an die Pipe in diesem Member gesendet oder aus dieser gelesen werden.
TransferBuffer
Zeiger auf einen residenten Puffer für die Übertragung oder ist NULL , wenn eine MDL in TransferBufferMDL bereitgestellt wird. Der Inhalt dieses Puffers hängt vom Wert von TransferFlags ab. Wenn USBD_TRANSFER_DIRECTION_IN angegeben ist, enthält dieser Puffer Daten, die beim Zurückgeben vom Hostcontrollertreiber vom Gerät gelesen werden. Andernfalls enthält dieser Puffer vom Treiber bereitgestellte Daten für die Übertragung an das Gerät.
TransferBufferMDL
Zeiger auf eine MDL, die einen residenten Puffer beschreibt, oder null ist, wenn ein Puffer in TransferBuffer bereitgestellt wird. Der Inhalt des Puffers hängt vom Wert von TransferFlags ab. Wenn USBD_TRANSFER_DIRECTION_IN angegeben ist, enthält der beschriebene Puffer Daten, die vom Gerät gelesen werden, wenn er vom Hostcontrollertreiber zurückgegeben wird. Andernfalls enthält der Puffer vom Treiber bereitgestellte Daten für die Übertragung an das Gerät. Diese MDL muss aus einem nicht ausseitigen Pool zugeordnet werden.
Timeout
Gibt die Zeit in Millisekunden an, bevor das URB-Timeout ausgibt. Der Wert 0 gibt an, dass für diese URB kein Timeout vorliegt.
Pad
Reserviert. Darf nicht verwendet werden.
hca
Reserviert. Darf nicht verwendet werden.
SetupPacket[8]
Gibt ein ÜBER USB definiertes Anforderungssetuppaket an. Das Format eines USB-Anforderungssetuppakets befindet sich in der USB-Core-Spezifikation.
Hinweise
Diese URB-Struktur ist mit _URB_CONTROL_TRANSFER identisch, mit der Ausnahme, dass der Timeout-Member ein Timeout für die URB festlegt.
Die reservierten Member dieser Struktur müssen als undurchsichtig behandelt werden und sind für die Systemverwendung reserviert.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Verfügbar in Windows Vista und höheren Betriebssystemen. |
Kopfzeile | usb.h (usb.h einschließen) |