_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 für 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-Kopfzeileninformationen angibt. Hdr.Function muss eine von 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, eine oder eine Kombination der folgenden Flags an:

Wert Bedeutung
USBD_TRANSFER_DIRECTION_IN
Wird so festgelegt, dass Daten von einem Gerät angefordert werden. Um Daten an ein Gerät zu übertragen, muss diese Kennzeichnung klar sein. Das Kennzeichen muss festgelegt werden, wenn es sich bei der Leitung um eine Unterbrechungsübertragungspipeline handelt.
USBD_SHORT_TRANSFER_OK
Wird so festgelegt, dass der Hostcontroller keinen Fehler zurückgibt, wenn es 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-Element der USB_DEVICE_DESCRIPTOR Struktur (Gerätedeskriptor) für den Standardsteuerelementendpunkt gemeldet. Bei einem nicht standardmäßigen Steuerelementendpunkt wird die maximale Paketgröße im wMaxPacketSize-Element der USB_ENDPOINT_DESCRIPTOR-Struktur (Endpunktdeskriptor) festgelegt.

Wenn der Hostcontroller ein Paket empfängt, dessen Länge kürzer als der wMaxPacketSize-Wert für einen Steuerelementendpunkt ist, lautet das Verhalten je nach Hostcontrollertyp wie folgt:

  • Auf EHCI-Hostcontrollern geht der Hostcontroller sofort zur Statusphase der Steuerungsübertragung fort. Die Übertragung wird erfolgreich abgeschlossen, unabhängig davon, ob USBD_SHORT_TRANSFER_OK festgelegt ist.
  • Wenn USBD_SHORT_TRANSFER_OK festgelegt ist, wird der Hostcontroller auf UHCI- und OHCI-Hostcontrollern zur Statusphase fortgesetzt. Wenn USBD_SHORT_TRANSFER_OK nicht festgelegt ist, verlässt der Hostverantwortliche die Daten- und Statusphasen der Steuerungsübertragung und die Übertragung wird mit einem Fehler abgeschlossen.

Dieses Kennzeichen sollte nicht festgelegt werden, es sei denn, USBD_TRANSFER_DIRECTION_IN auch festgelegt ist.

TransferBufferLength

Gibt die Länge des in TransferBuffer angegebenen Puffers in Bytes an oder wird in TransferBufferMDL beschrieben. Der Hostcontrollertreiber gibt die Anzahl der Bytes zurück, die an die Pipeline in diesem Element gesendet oder 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 wird, enthält dieser Puffer Daten, die vom Gerät gelesen werden, wenn er vom Hostcontrollertreiber zurückgegeben wird. Andernfalls enthält dieser Puffer Treiberdaten zur Ü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, um vom Hostcontrollertreiber zurückzugeben. Andernfalls enthält der Puffer die vom Treiber bereitgestellten Daten für die Übertragung an das Gerät. Diese MDL muss aus einem nicht seitenfreien Pool zugewiesen werden.

UrbLink

Reserviert. Darf nicht verwendet werden.

hca

Reserviert. Darf nicht verwendet werden.

RequestTypeReservedBits

Reserviert. Darf nicht verwendet werden.

Request

Gibt den usb- oder herstellerdefinierten Anforderungscode für das Gerät, die Schnittstelle, den Endpunkt oder ein anderes gerätedefiniertes Ziel an.

Value

Gibt einen Wert an, der speziell auf Anforderung festgelegt ist, der Teil des USB-definierten Setuppakets für das Ziel wird. Dieser Wert wird vom Ersteller des codes definiert, der in Request verwendet wird.

Index

Gibt den gerätedefinierten Index an, der von einer erfolgreichen Konfigurationsanforderung zurückgegeben wird, wenn sich die Anforderung auf einen Endpunkt oder eine Schnittstelle befindet. Andernfalls muss Index null sein.

Reserved1

Reserviert. Darf nicht verwendet werden.

Bemerkungen

Treiber können dieses URB-Format mithilfe des UsbBuildVendorRequest-Dienstroutineformats verwenden.

Die reservierten Member dieser Struktur müssen als undurchsichtig behandelt und für die Systemverwendung reserviert werden.

Requirements (Anforderungen)

   
Header usb.h (include Usb.h)

Weitere Informationen

Urb

USB-Strukturen

_URB_HEADER