IOCTL_BTH_HCI_VENDOR_COMMAND IOCTL (bthioctl.h)
IOCTL_BTH_HCI_VENDOR_COMMAND要求により、Bluetooth アプリケーションはベンダー固有のコマンドを無線に送信できます。
メジャー コード
[入力バッファー]
AssociatedIrp.SystemBuffer メンバーは、BTH_VENDOR_SPECIFIC_COMMAND構造体を指します。 構造体には、製造元識別子、リンク管理プロトコル (LMP) バージョン、HCI コマンド ヘッダー、およびイベントとコマンドに一致するオプションのパターン データを含む関連ベンダー コマンド データが含まれています。
入力バッファーの長さ
BTH_VENDOR_SPECIFIC_COMMAND構造体の長さ。
出力バッファー
AssociatedIrp.SystemBuffer メンバーは、無線から返されるイベント データを含むバッファーを指します。 データは、BTH_VENDOR_EVENT_INFO構造体の EventInfo メンバーで使用できます。
typedef struct _BTH_VENDOR_EVENT_INFO {
BTH_ADDR BthAddress;
ULONG EventSize;
UCHAR EventInfo[1];
} BTH_VENDOR_EVENT_INFO, *PBTH_VENDOR_EVENT_INFO;
EventSize メンバーは、無線から返されるベンダー固有のイベント データのサイズを提供します。
出力バッファーの長さ
BTH_VENDOR_EVENT_INFO構造体の長さ。
ステータス ブロック
要求が成功した場合、STATUS_BLOCK構造体の Information メンバーは、コマンド応答を保持するバッファーのサイズ (バイト単位) に設定されます。
Status メンバーは、次の表のいずれかの値に設定されます。
ステータス値 | 説明 |
---|---|
STATUS_SUCCESS | IOCTL が正常に完了しました。 |
STATUS_BUFFER_TOO_SMALL | 渡された入力バッファーが小さすぎます。 |
STATUS_INVALID_PARAMETER | 渡された入力バッファーが無効です。 |
STATUS_PRIVILEGE_NOT_HELD | 呼び出し元には、必要な特権がありません。 |
STATUS_INSUFFICIENT_RESOURCES | 要求を処理するために使用できるメモリが不足していました。 |
注釈
IOCTL_BTH_HCI_VENDOR_COMMAND要求は、ベンダーが Bluetooth 無線に固有のコマンドを作成できるようにするメカニズムを提供します。
の製造元 ID とリンク管理プロトコル (LMP) バージョン値 BTH_VENDOR_SPECIFIC_COMMAND 構造は、ベンダー固有のコマンドが間違った無線に送信されるのを防ぐのに役立ちます。 LMP バージョンを使用すると、ベンダーは、一致する LMP バージョンを持つ無線にベンダー固有のコマンドを送信できます。 LMP バージョンが 0 の場合、そのベンダーからのすべての無線はベンダー固有のコマンドを受け取ります。
ベンダー固有のコマンドが標準の HCI フロー制御に従っていない場合に、ベンダー固有のコマンドに応答してベンダー固有のイベントが生成される場合は、パターンが必要です。
パターンが必要な場合は、コマンドの後に、イベントに存在するパターンの BTH_VENDOR_PATTERN 構造体が続く必要があります。 これらのパターンを使用すると、Bluetooth ドライバー スタックはベンダー固有のイベントと対応するベンダー固有のコマンドを照合できます。
BTH_VENDOR_PATTERN構造体は、BTH_VENDOR_SPECIFIC_COMMAND 構造体の Data メンバーで指定されているベンダー固有のコマンド データに従うこのようなパターンを指定します。 コマンドに続くすべてのパターンの最大合計サイズは、255 を超えてはなりません。
HANDLE procToken;
LUID luid;
TOKEN_PRIVILEGES tp;
OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &procToken);
LookupPrivilegeValue(NULL, SE_LOAD_DRIVER_NAME, &luid);
Tp.PrivilegeCount = 1;
Tp.privileges[0].Luid = luid;
Tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(procToken, FALSE, &tp, sizeof(TOKEN_PRIVILEGES), (PTOKEN_PRIVILEGES) NULL, (PDWORD)NULL);
このコマンドのために生成されたイベントは、出力バッファー (イベント ヘッダーを含む) にコピーされます。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | バージョン:Microsoft Windows Vista SP2 以降のオペレーティング システムバージョンの_Available。 |
Header | bthioctl.h (Bthioctl.h を含む) |
IRQL | <= PASSIVE_LEVEL |