IOCTL_BTHX_READ_HCI IOCTL (bthxddi.h)
IOCTL_BTHX_READ_HCIは、トランスポート層から Bluetooth ACL データとイベントを読み取るために使用されます。
メジャー コード
[入力バッファー]
プロファイル ドライバーでは、KMDF とその WdfRequestRetrieveInputMemory メソッドを使用して、入力パラメーターを取得する必要があります。 たとえば、出力バッファーを取得するには、次のようにします。
Status = WdfRequestRetrieveInputMemory(_Request, &ReqInMemory);
詳細については、WDK Bluetooth のサンプルを参照してください。
入力バッファーの長さ
バッファーは、読み取りの種類を表す UCHAR を表します。 バッファーの長さは UCHAR のサイズです。
出力バッファー
プロファイル ドライバーでは、KMDF とその WdfRequestRetrieveOutputMemory メソッドを使用して、入力パラメーターを取得する必要があります。 たとえば、出力バッファーを取得するには、次のようにします。
Status = WdfRequestRetrieveOutputMemory(_Request, &ReqOutMemory);
詳細については、WDK Bluetooth のサンプルを参照してください。
出力バッファーの長さ
AssociatedIrp.SystemBuffer メンバーは、読み取りに関連付けられたBTHX_HCI_READ_WRITE_CONTEXT構造と追加データを保持するバッファーを指します。 バッファーは、パケットの種類に応じて、最大のイベントまたは ACL データ パケットを保持するのに十分な大きさである必要があります。
イベント パケットの場合、FIELD_OFFSET(BTHX_HCI_READ_WRITE_CONTEXT、データ) +257 です。ここで、257 は 2 バイトのイベント ヘッダーと 255 バイトのイベント データの合計です。
ACL データ パケットの場合、FIELD_OFFSET(BTHX_HCI_READ_WRITE_CONTEXT、Data) + MaxAclTransferInSize です。ここで、MaxAclTransferInSize は、IOCTL_BTHX_QUERY_CAPABILITIESを持つトランスポート ドライバーから返されるBTHX_CAPABILITIESの値です。
ステータス ブロック
STATUS_BLOCK構造体の Information メンバーは、返されるデータのバイト数に設定されます。
Status メンバーは、次の表のいずれかの値に設定されます。
ステータス値 | 説明 |
---|---|
STATUS_SUCCESS | IOCTL が正常に完了しました。 |
STATUS_CANCELLED | IOCTL が取り消されました。 |
注釈
入力バッファーは、読み取られるパケットの種類を指します。
出力バッファーは、 DataLen メンバーが Data メンバー内のバイト数を指定するBTHX_HCI_READ_WRITE_CONTEXT 構造体を指 します。 Type メンバーは、入力パケットの種類と同じに設定する必要があります。
STATUS_BLOCKの Information メンバーは、FIELD_OFFSET(BTHX_HCI_READ_WRITE_CONTEXT、Data) + DataLen に設定する必要があります。
ACL 読み取りの Data メンバーの最大サイズは、BTHX_CAPABILITIES構造体で指定された MaxAclTransferInSize によって決まります。 イベントの Data メンバーの最大サイズは 255 です。
この IOCTL は、通常の操作でのみSTATUS_SUCCESSを返す必要があります。 トランスポート固有のエラーは返されません。 IOCTL は、この IOCTL が取り消された場合にのみSTATUS_CANCELLEDを返す必要があります。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 8 以降でサポートされています。 |
Header | bthxddi.h |
IRQL | <= PASSIVE_LEVEL |