Partager via


IOCTL_BTHX_READ_HCI IOCTL (bthxddi.h)

IOCTL_BTHX_READ_HCI est utilisé pour lire les données et événements de liste de contrôle d’accès Bluetooth à partir de la couche de transport.

Code principal

IRP_MJ_DEVICE_CONTROL

Mémoire tampon d'entrée

Les pilotes de profil doivent utiliser KMDF et sa méthode WdfRequestRetrieveInputMemory pour récupérer les paramètres d’entrée. Par exemple, pour obtenir la mémoire tampon de sortie :

Status = WdfRequestRetrieveInputMemory(_Request, &ReqInMemory);

Pour plus d’informations, consultez les exemples WdK Bluetooth.

Longueur de la mémoire tampon d’entrée

La mémoire tampon décrit un UCHAR qui représente le type de lecture. La longueur de la mémoire tampon correspond à la taille de l’UCHAR.

Mémoire tampon de sortie

Les pilotes de profil doivent utiliser KMDF et sa méthode WdfRequestRetrieveOutputMemory pour récupérer les paramètres d’entrée. Par exemple, pour obtenir la mémoire tampon de sortie :

Status = WdfRequestRetrieveOutputMemory(_Request, &ReqOutMemory);

Pour plus d’informations, consultez les exemples WdK Bluetooth.

Longueur de la mémoire tampon de sortie

Le membre AssociatedIrp.SystemBuffer pointe vers une mémoire tampon qui contient une structure BTHX_HCI_READ_WRITE_CONTEXT et des données supplémentaires associées à la lecture. La mémoire tampon doit être suffisamment grande pour contenir le plus grand événement ou le paquet de données ACL, en fonction de son type de paquet.

Pour un paquet d’événements, il s’agit de FIELD_OFFSET(BTHX_HCI_READ_WRITE_CONTEXT, Données) +257 où 257 est la somme d’un en-tête d’événement de 2 octets et de données d’événement de 255 octets.

Pour un paquet de données ACL, il s’agit de FIELD_OFFSET(BTHX_HCI_READ_WRITE_CONTEXT, Données) + MaxAclTransferInSize où MaxAclTransferInSize est la valeur dans BTHX_CAPABILITIES qui est retournée par le pilote de transport avec IOCTL_BTHX_QUERY_CAPABILITIES.

Bloc d’état

Le membre Information de la structure STATUS_BLOCK est défini sur le nombre d’octets de données retournés.

Le membre Status est défini sur l’une des valeurs du tableau suivant.

Valeur d’état Description
STATUS_SUCCESS Le IOCTL s’est terminé avec succès.
STATUS_CANCELLED Le IOCTL a été annulé.

Remarques

La mémoire tampon d’entrée pointe vers le type de paquet en cours de lecture.

La mémoire tampon de sortie pointe vers une structure BTHX_HCI_READ_WRITE_CONTEXT dont le membre DataLen spécifie le nombre d’octets dans le membre Data . Le membre Type doit être défini sur la même valeur que le type de paquet d’entrée.

Le membre Information du STATUS_BLOCK doit être défini sur FIELD_OFFSET(BTHX_HCI_READ_WRITE_CONTEXT, Data) + DataLen.

La taille maximale du membre Data pour une lecture ACL est déterminée par MaxAclTransferInSize, spécifiée dans la structure BTHX_CAPABILITIES. La taille maximale du membre Data pour un événement est de 255.

Ce IOCTL ne doit retourner STATUS_SUCCESS que dans le cadre d’un fonctionnement normal. Les erreurs spécifiques au transport ne doivent pas être retournées. Le IOCTL ne doit retourner STATUS_CANCELLED que si ce IOCTL a été annulé.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Pris en charge à partir de Windows 8.
En-tête bthxddi.h
IRQL <= PASSIVE_LEVEL