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
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 |