IOCTL_BTH_HCI_VENDOR_COMMAND IOCTL (btlctl.h)

IOCTL_BTH_HCI_VENDOR_COMMAND要求可讓藍牙應用程式將廠商特定的命令傳送至無線電。

主要程序代碼

IRP_MJ_DEVICE_CONTROL

輸入緩衝區

AssociatedIrp.SystemBuffer 成員指向 BTH_VENDOR_SPECIFIC_COMMAND 結構。 結構包含製造商標識碼、連結管理通訊協定 (LMP) 版本、HCI 命令標頭,以及包含選擇性模式數據的相關聯廠商命令數據,以符合事件與命令。

輸入緩衝區長度

BTH_VENDOR_SPECIFIC_COMMAND 結構的長度。

輸出緩衝區

AssociatedIrp.SystemBuffer 成員指向包含從無線電傳回的事件數據緩衝區。 數據可在 EventInfo 中取得,BTH_VENDOR_EVENT_INFO 結構的成員。

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 結構的成員會設定為保留命令回應之緩衝區的大小,以位元組為單位。

Status 成員會設定為下表中的其中一個值。

狀態值 描述
STATUS_SUCCESS IOCTL 已順利完成。
STATUS_BUFFER_TOO_SMALL 傳遞的輸入緩衝區太小。
STATUS_INVALID_PARAMETER 傳遞的輸入緩衝區無效。
STATUS_PRIVILEGE_NOT_HELD 呼叫端沒有必要的許可權。
STATUS_INSUFFICIENT_RESOURCES 記憶體不足,無法處理要求。

言論

IOCTL_BTH_HCI_VENDOR_COMMAND要求提供一種機制,可讓廠商建立其藍牙無線電專用的命令。

中的製造商標識碼和連結管理通訊協定 (LMP) 版本值 BTH_VENDOR_SPECIFIC_COMMAND 結構有助於防止將廠商特定的命令傳送到錯誤的無線電。 LMP 版本可讓廠商將廠商特定的命令傳送至具有相符 LMP 版本的無線電。 如果 LMP 版本為零,來自該廠商的所有無線電將會接收廠商特定的命令。

如果廠商特定的命令未遵循標準 HCI 流程控制,而且產生廠商特定事件以回應廠商特定的命令,則需要模式。

如果需要模式,命令後面應該接著 BTH_VENDOR_PATTERN 存在於 事件中的模式結構。 這些模式可讓藍牙驅動程式堆疊與對應的廠商特定命令比對廠商特定的事件。

BTH_VENDOR_PATTERN 結構會指定遵循BTH_VENDOR_SPECIFIC_COMMAND結構之 Data 成員中所指定廠商特定命令數據的這類模式。 遵循命令的所有模式大小上限不應大於 255。

警告 提交IOCTL_BTH_HCI_VENDOR_COMMAND的程序必須具有SE_LOAD_DRIVER_NAME許可權。 在系統或系統管理員內容中執行的進程,可以使用 SDK LookupPrivilegeValue,並 AdjustTokenPrivileges 函式來提升其許可權。 下列程式代碼範例示範如何取得此許可權。 請注意,此範例不會示範錯誤處理。
 
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。
標頭 btlctl.h (include Btlctl.h)
IRQL <= PASSIVE_LEVEL

另請參閱

BTH_COMMAND_HEADER

BTH_VENDOR_PATTERN

BTH_VENDOR_SPECIFIC_COMMAND