IOCTL_BTH_HCI_VENDOR_COMMAND IOCTL (btlctl.h)
IOCTL_BTH_HCI_VENDOR_COMMAND要求可讓藍牙應用程式將廠商特定的命令傳送至無線電。
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。
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 |