Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die _URB_BULK_OR_INTERRUPT_TRANSFER Struktur wird von USB-Clienttreibern verwendet, um Daten in einem Massenpipeline oder in einer Interruptpipe zu senden oder zu empfangen.
Syntax
struct _URB_BULK_OR_INTERRUPT_TRANSFER {
struct _URB_HEADER Hdr;
USBD_PIPE_HANDLE PipeHandle;
ULONG TransferFlags;
ULONG TransferBufferLength;
PVOID TransferBuffer;
PMDL TransferBufferMDL;
struct _URB *UrbLink;
struct _URB_HCD_AREA hca;
};
Angehörige
Hdr
Zeigen Sie auf eine _URB_HEADER Struktur, die die URB-Headerinformationen angibt.
Hdr.Function- muss URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER sein, und Hdr.Length- muss auf sizeof(_URB_BULK_OR_INTERRUPT_TRANSFER)
festgelegt werden.
PipeHandle
Gibt einen undurchsichtigen Ziehpunkt für den Massen- oder Unterbrechungsrohr an. Der Hostcontrollertreiber gibt dieses Handle zurück, wenn der Clienttreiber die Gerätekonfiguration mit einem URB vom Typ URB_FUNCTION_SELECT_CONFIGURATION auswählt oder wenn der Clienttreiber die Einstellungen für eine Schnittstelle mit einem URB vom Typ URB_FUNCTION_SELECT_INTERFACE ändert.
TransferFlags
Gibt null, eins oder eine Kombination der folgenden Flags an:
Wert | Bedeutung |
---|---|
|
Wird so festgelegt, dass Daten von einem Gerät angefordert werden. Um Daten an ein Gerät zu übertragen, muss dieses Kennzeichen klar sein. |
|
Ist so festgelegt, dass Daten an ein Gerät übertragen werden. Das Festlegen dieses Kennzeichens entspricht dem Löschen des USBD_TRANSFER_DIRECTION_IN Flags. |
|
Ist 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 wMaxPacketSize Member der USB_ENDPOINT_DESCRIPTOR-Struktur (Endpunktdeskriptor) gemeldet. Wenn der Hostcontroller ein Paket empfängt, das kürzer als wMaxPacketSize auf einem Massen- oder Unterbrechungsendpunkt ist, beendet der Hostcontroller sofort das Anfordern von Daten vom Endpunkt und schließt die Übertragung ab. Wenn das USBD_SHORT_TRANSFER_OK Flag nicht festgelegt ist, schließt der Hostcontroller die Übertragung mit einem Fehler ab.
Dieses Kennzeichen sollte nur festgelegt werden, wenn USBD_TRANSFER_DIRECTION_IN ebenfalls festgelegt ist. Hinweis Auf EHCI-Hostcontrollern wird USBD_SHORT_TRANSFER_OK für Massen- und Unterbrechungsendpunkte ignoriert. Die Übertragung kurzer Pakete auf EHCI-Controllern führt nicht zu einer Fehlerbedingung. Wenn USBD_SHORT_TRANSFER_OK auf UHCI- und OHCI-Hostcontrollern nicht für eine Massen- oder Unterbrechungsübertragung festgelegt ist, wird der Endpunkt durch eine kurze Paketübertragung angehalten, und für die Übertragung wird ein Fehlercode zurückgegeben. Der Clienttreiber muss den Endpunkt fortsetzen, indem er eine URB_FUNCTION_SYNC_RESET_PIPE_AND_CLEAR_STALL Anforderung sendet, bevor eine Übertragungsanforderung an den Endpunkt gesendet wird. |
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 Pipe 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 TransferFlagsab. Wenn USBD_TRANSFER_DIRECTION_IN angegeben wird, enthält dieser Puffer Daten, die vom Gerät gelesen werden, wenn es vom Hostcontrollertreiber zurückgegeben wird. 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 TransferFlagsab. 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 nicht seitengebundenen Pools zugewiesen werden.
UrbLink
Reserviert. Nicht verwenden.
hca
Reserviert. Nicht verwenden.
Bemerkungen
Treiber können die UsbBuildInterruptOrBulkTransferRequest Dienstroutine verwenden, um diese URB zu formatieren. Puffer, die in TransferBuffer- angegeben oder in TransferBufferMDL-beschrieben werden, müssen nicht ausgelagert werden können.
In einer URB-können sowohl TransferBuffer- als auch TransferBufferMDL Parameter gleichzeitig Nullwerte sein. In diesem Fall muss der Übertragungspuffer und die MDL auf TransferBuffer- und TransferBufferMDL- auf denselben Puffer verweisen.
Der USB-Bustreiber verarbeitet diesen URB bei DISPATCH_LEVEL.
Die reservierten Member dieser Struktur müssen als undurchsichtig behandelt werden und sind für die Systemverwendung reserviert.
Anforderungen
Anforderung | Wert |
---|---|
Header- | usb.h (include Usb.h) |