我试图使用信息调用DeviceIoControl,我认为这是可以做到的(相应地对蓝牙配置文件驱动程序IOCTLs)。
我使用Visual 2012在Windows 7 x64上(可能使用默认配置)。
句柄有一个有效值(我删除了验证代码),但是DeviceIoControl总是返回ERROR_INVALID_USER_BUFFER (错误1784)。
下面是代码:
int main() {
BTH_LOCAL_RADIO_INFO buffer;
BOOL fStatus;
HANDLE h;
DWORD returned = 0;
h = CreateFile(
TEXT("\\\\.\\BthPan"),
GENERIC_READ | GENERIC_WRITE ,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
0,
NULL);
fStatus = DeviceIoControl(
h,
IOCTL_BTH_GET_LOCAL_INFO,
NULL, 0,
(LPVOID)&buffer, sizeof(BTH_LOCAL_RADIO_INFO),
&returned,
(LPOVERLAPPED) NULL
);
(...)经过一些研究,我尝试了以下解决方案:
上述所有解决方案都失败了。你觉得那是什么?VS有很多用于Win32的配置,但这从来没有给我带来问题(虽然第一次使用IOCTL )。
我在32feet.NET上看到了一些代码,所以这可能只是我的一个错误(我看不出有什么不同)。
发布于 2012-10-16 07:46:11
您将IOCTL_BTH_GET_LOCAL_INFO发送到错误的设备(蓝牙个人区域网络而不是蓝牙无线电)。
因此,我建议您使用BluetoothFindFirstRadio、BluetoothFindNextRadio和BluetoothFindRadioClose来简单地迭代本地蓝牙收音机,而不是为它们猜测正确的DOS设备名称。
https://stackoverflow.com/questions/12904446
复制相似问题