Freigeben über


IOCTL_BTHX_READ_HCI IOCTL (bthxddi.h)

IOCTL_BTHX_READ_HCI wird verwendet, um Bluetooth-ACL-Daten und -Ereignisse von der Transportschicht zu lesen.

Hauptcode

IRP_MJ_DEVICE_CONTROL

Eingabepuffer

Profiltreiber sollten KMDF und die zugehörige WdfRequestRetrieveInputMemory-Methode verwenden, um Eingabeparameter abzurufen. So rufen Sie beispielsweise den Ausgabepuffer ab:

Status = WdfRequestRetrieveInputMemory(_Request, &ReqInMemory);

Weitere Informationen finden Sie in den WDK-Bluetooth-Beispielen.

Länge des Eingabepuffers

Der Puffer beschreibt eine UCHAR, die den Typ des Lesevorgangs darstellt. Die Länge des Puffers ist die Größe der UCHAR.

Ausgabepuffer

Profiltreiber sollten KMDF und die zugehörige WdfRequestRetrieveOutputMemory-Methode verwenden, um Eingabeparameter abzurufen. So rufen Sie beispielsweise den Ausgabepuffer ab:

Status = WdfRequestRetrieveOutputMemory(_Request, &ReqOutMemory);

Weitere Informationen finden Sie in den WDK-Bluetooth-Beispielen.

Länge des Ausgabepuffers

Der AssociatedIrp.SystemBuffer-Member verweist auf einen Puffer, der eine BTHX_HCI_READ_WRITE_CONTEXT-Struktur und zusätzliche Daten enthält, die dem Lesevorgang zugeordnet sind. Der Puffer muss groß genug sein, um je nach Pakettyp das größte Ereignis- oder ACL-Datenpaket zu enthalten.

Für ein Ereignispaket ist es FIELD_OFFSET(BTHX_HCI_READ_WRITE_CONTEXT, Daten) +257, wobei 257 die Summe eines 2-Byte-Ereignisheaders und 255-Byte-Ereignisdaten ist.

Für ein ACL-Datenpaket ist es FIELD_OFFSET(BTHX_HCI_READ_WRITE_CONTEXT, Daten) + MaxAclTransferInSize, wobei MaxAclTransferInSize der Wert in BTHX_CAPABILITIES ist, der vom Transporttreiber mit IOCTL_BTHX_QUERY_CAPABILITIES zurückgegeben wird.

Statusblock

Der Information-Member der STATUS_BLOCK-Struktur ist auf die Anzahl der zurückgegebenen Daten in Bytes festgelegt.

Das Status-Element wird auf einen der Werte in der folgenden Tabelle festgelegt.

Statuswert BESCHREIBUNG
STATUS_SUCCESS Die IOCTL wurde erfolgreich abgeschlossen.
STATUS_CANCELLED Die IOCTL wurde abgebrochen.

Hinweise

Der Eingabepuffer verweist auf den Typ des zu lesenden Pakets.

Der Ausgabepuffer verweist auf eine BTHX_HCI_READ_WRITE_CONTEXT-Struktur, deren DataLen-Member die Anzahl von Bytes im Data-Element angibt. Der Typmember muss auf dasselbe wie der Eingabepakettyp festgelegt werden.

Der Information-Member des STATUS_BLOCK sollte auf FIELD_OFFSET(BTHX_HCI_READ_WRITE_CONTEXT, Data) + DataLen festgelegt werden.

Die maximale Größe des Data-Elements für einen ACL-Lesevorgang wird durch MaxAclTransferInSize bestimmt, das in der BTHX_CAPABILITIES-Struktur angegeben ist. Die maximale Größe des Data-Elements für ein Ereignis beträgt 255.

Diese IOCTL sollte nur im normalen Betrieb STATUS_SUCCESS zurückgeben. Transportspezifische Fehler sollten nicht zurückgegeben werden. Die IOCTL sollte nur dann STATUS_CANCELLED zurückgeben, wenn diese IOCTL abgebrochen wurde.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Unterstützt ab Windows 8.
Kopfzeile bthxddi.h
IRQL <= PASSIVE_LEVEL