IOCTL_BTH_HCI_VENDOR_COMMAND IOCTL (bthioctl.h)

IOCTL_BTH_HCI_VENDOR_COMMAND请求允许蓝牙应用程序将特定于供应商的命令发送到无线电。

主要代码

IRP_MJ_DEVICE_CONTROL

输入缓冲区

AssociatedIrp.SystemBuffer 成员指向 BTH_VENDOR_SPECIFIC_COMMAND 结构。 该结构包含制造商标识符、链接管理协议(LMP)版本、HCI 命令标头以及关联的供应商命令数据,其中包括可选模式数据,以匹配命令的事件。

输入缓冲区长度

BTH_VENDOR_SPECIFIC_COMMAND 结构的长度。

输出缓冲区

AssociatedIrp.SystemBuffer 成员指向包含从无线电返回的事件数据的缓冲区。 EventInfoBTH_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请求提供了一种机制,允许供应商创建特定于其蓝牙无线电的命令。

制造商 ID 和链接管理协议 (LMP) 版本值 BTH_VENDOR_SPECIFIC_COMMAND 结构有助于防止将特定于供应商的命令发送到错误的无线电。 LMP 版本使供应商能够将特定于供应商的命令发送到具有匹配 LMP 版本的无线电。 如果 LMP 版本为零,则来自该供应商的所有无线电都将接收特定于供应商的命令。

如果特定于供应商的命令不遵循标准 HCI 流控制,并且生成特定于供应商的事件来响应特定于供应商的命令,则需要模式。

如果需要模式,该命令应遵循事件中存在的模式 BTH_VENDOR_PATTERN 结构。 这些模式允许蓝牙驱动程序堆栈将特定于供应商的事件与相应的特定于供应商的命令匹配。

BTH_VENDOR_PATTERN结构指定了遵循BTH_VENDOR_SPECIFIC_COMMAND结构 数据 成员中指定的特定于供应商的命令数据的此类模式。 遵循命令的所有模式的最大总大小不应大于 255。

警告 提交IOCTL_BTH_HCI_VENDOR_COMMAND的过程必须具有SE_LOAD_DRIVER_NAME权限。 在系统或管理员上下文中运行的进程可以使用 SDK LookupPrivilegeValueAdjustTokenPrivileges 函数来提升其特权。 下面的代码示例演示如何获取此权限。 请注意,该示例不演示错误处理。
 
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);

由于此命令而生成的事件将复制到输出缓冲区(包括事件标头)。

要求

要求 价值
最低支持的客户端 版本:_Available Microsoft Windows Vista SP2 及更高版本的作系统版本。
标头 bthioctl.h (包括 Bthioctl.h)
IRQL <= PASSIVE_LEVEL

另请参阅

BTH_COMMAND_HEADER

BTH_VENDOR_PATTERN

BTH_VENDOR_SPECIFIC_COMMAND