_URB_CONTROL_VENDOR_OR_CLASS_REQUEST-Struktur (usb.h)
Die _URB_CONTROL_VENDOR_OR_CLASS_REQUEST-Struktur wird von USB-Clienttreibern verwendet, um einen anbieter- oder klassenspezifischen Befehl an ein Gerät, eine Schnittstelle, einen Endpunkt oder ein anderes gerätedefiniertes Ziel auszugeben.
Syntax
struct _URB_CONTROL_VENDOR_OR_CLASS_REQUEST {
struct _URB_HEADER Hdr;
PVOID Reserved;
ULONG TransferFlags;
ULONG TransferBufferLength;
PVOID TransferBuffer;
PMDL TransferBufferMDL;
struct _URB *UrbLink;
struct _URB_HCD_AREA hca;
UCHAR RequestTypeReservedBits;
UCHAR Request;
USHORT Value;
USHORT Index;
USHORT Reserved1;
};
Member
Hdr
Zeiger auf eine _URB_HEADER-Struktur , die die URB-Headerinformationen angibt. Hdr.Function muss eine der URB_FUNCTION_CLASS_XXX oder URB_FUNCTION_VENDOR_XXX GET_STATUS sein, und Hdr.Length muss sein sizeof(_URB_CONTROL_VENDOR_OR_CLASS_REQUEST)
.
Reserved
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. Das Flag muss festgelegt werden, wenn es sich bei der Pipe um eine Interruptübertragungspipe handelt. |
|
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:
Dieses Flag sollte nur festgelegt werden, wenn USBD_TRANSFER_DIRECTION_IN ebenfalls festgelegt ist. |
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.
UrbLink
Reserviert. Darf nicht verwendet werden.
hca
Reserviert. Darf nicht verwendet werden.
RequestTypeReservedBits
Reserviert. Darf nicht verwendet werden.
Request
Gibt den USB- oder vom Hersteller definierten Anforderungscode für das Gerät, die Schnittstelle, den Endpunkt oder ein anderes gerätedefiniertes Ziel an.
Value
Gibt einen Für Request spezifischen Wert an, der Teil des USB-definierten Setuppakets für das Ziel wird. Dieser Wert wird vom Ersteller des in Request verwendeten Codes definiert.
Index
Gibt den gerätedefinierten Index an, der von einer erfolgreichen Konfigurationsanforderung zurückgegeben wird, wenn die Anforderung für einen Endpunkt oder eine Schnittstelle gilt. Andernfalls muss der Index null sein.
Reserved1
Reserviert. Darf nicht verwendet werden.
Hinweise
Treiber können das UsbBuildVendorRequest-Dienstroutinformat verwenden, das dieses URB-Format aufweist.
Die reservierten Member dieser Struktur müssen als undurchsichtig behandelt werden und sind für die Systemverwendung reserviert.
Anforderungen
Anforderung | Wert |
---|---|
Header | usb.h (usb.h einschließen) |