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.
IOCTL_BTHX_READ_HCI wird verwendet, um Bluetooth ACL-Daten und -Ereignisse aus der Transportebene zu lesen.
Hauptcode
Eingabepuffer
Profiltreiber sollten KMDF und deren WdfRequestRetrieveInputMemory Methode zum Abrufen von Eingabeparametern verwenden. So rufen Sie beispielsweise den Ausgabepuffer ab:
Status = WdfRequestRetrieveInputMemory(_Request, &ReqInMemory);
Weitere Informationen finden Sie in den WDK-Bluetooth-Beispielen.
Eingabepufferlänge
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 deren WdfRequestRetrieveOutputMemory Methode zum Abrufen von Eingabeparametern verwenden. 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 je nach Pakettyp groß genug sein, um das größte Ereignis oder das ACL-Datenpaket zu enthalten.
Bei einem Ereignispaket ist es FIELD_OFFSET(BTHX_HCI_READ_WRITE_CONTEXT, Daten) +257, wobei 257 die Summe eines 2-Byte-Ereignisheaders und 255-Byte-Ereignisdaten darstellt.
Bei einem ACL-Datenpaket ist es FIELD_OFFSET(BTHX_HCI_READ_WRITE_CONTEXT, Data) + MaxAclTransferInSize, wobei MaxAclTransferInSize der Wert in BTHX_CAPABILITIES ist, der vom Transporttreiber mit IOCTL_BTHX_QUERY_CAPABILITIES zurückgegeben wird.
Statusblock
Das Information Member der STATUS_BLOCK-Struktur wird auf die Anzahl der zurückgegebenen Daten festgelegt.
Der Status Member 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. |
Bemerkungen
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 der Bytes im Data-Element angibt. Der Type Member muss auf den gleichen Wert wie der Eingabepakettyp festgelegt werden.
Die Information Mitglied der STATUS_BLOCK sollte auf FIELD_OFFSET(BTHX_HCI_READ_WRITE_CONTEXT, Daten) + DataLenfestgelegt werden.
Die maximale Größe des Data-Members für ein ACL-Leseelement wird durch MaxAclTransferInSizebestimmt, der in der BTHX_CAPABILITIES-Struktur angegeben ist. Die maximale Größe des Data Members für ein Ereignis beträgt 255.
Diese IOCTL sollte STATUS_SUCCESS nur unter normalem Betrieb zurückgeben. Transportspezifische Fehler sollten nicht zurückgegeben werden. Die IOCTL sollte STATUS_CANCELLED nur dann zurückgeben, wenn diese IOCTL abgebrochen wurde.
Anforderungen
| Anforderung | Wert |
|---|---|
| mindestens unterstützte Client- | Wird ab Windows 8 unterstützt. |
| Header- | bthxddi.h |
| IRQL- | <= PASSIVE_LEVEL |