社区
Windows SDK/API
帖子详情
如何获得硬件设备的句柄
faiqi
2003-10-30 10:26:02
比如一块PCI卡,如何获得其设备句柄 ,谢谢!
...全文
393
9
打赏
收藏
如何获得硬件设备的句柄
比如一块PCI卡,如何获得其设备句柄 ,谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jiangchun_xn
2003-11-11
打赏
举报
回复
learning
yayowd
2003-11-11
打赏
举报
回复
不懂!
781014
2003-11-08
打赏
举报
回复
学习
Atomictry
2003-11-04
打赏
举报
回复
学习。
hongliqiu
2003-10-31
打赏
举报
回复
学习~
Yuehj
2003-10-31
打赏
举报
回复
例如:
//打开一个设备
HANDLE hDevice = CreateFile("\\\\.\\PYCommPort0",GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
0,
NULL
);
if(hDevice==INVALID_HANDLE_VALUE)return E_FAIL;
//与设备进行通讯
if(!DeviceIoControl(hDevice,PYCOMM_IOCTL_SETDATABITS,&comDataBits,sizeof(comDataBits),NULL,
0,&Status, NULL))
Yuehj
2003-10-31
打赏
举报
回复
首先要知道设备的符号连接(针对winnt环境)或设备ID(针对WDM驱动程序,WDM驱动程序有的也是使用符号连接)然后通过CreateFile函数打开设备,或使用DeviceIOControl直接与设备进行通讯。
sczyq
2003-10-31
打赏
举报
回复
//----------------------------------------------------
typedef struct NetCardStruct
{
DWORD Id; // 这就是你需要的设备句柄
AnsiString Name;
bool Enabled;
bool Changed;
bool IsDisable;
bool InitState;
} TNetCardStruct;
typedef TNetCardStruct* PNetCardStruct;
//---------------------------------------------------------------------------
void __fastcall EnumNetCards(TList *NetDeviceList)
{
AnsiString DevValue;
PNetCardStruct NetCard;
LPTSTR Buffer = NULL;
DWORD BufSize = 0;
HDEVINFO hDevInfo = 0;
if (INVALID_HANDLE_VALUE == (hDevInfo =
SetupDiGetClassDevs(NULL,NULL,0,DIGCF_PRESENT|DIGCF_ALLCLASSES)))
return;
SP_DEVINFO_DATA DeviceInfoData = {sizeof(SP_DEVINFO_DATA)};
for (DWORD DeviceId=0;
SetupDiEnumDeviceInfo(hDevInfo,DeviceId,&DeviceInfoData); DeviceId++)
{
DevValue.SetLength(0);
if (GetRegistryProperty(hDevInfo, &DeviceInfoData, SPDRP_CLASS , &Buffer, (PULONG)&BufSize))
DevValue = Buffer;
if (DevValue == "Net") // 判断设备是网卡
{
DevValue.SetLength(0);
if (GetRegistryProperty(hDevInfo, &DeviceInfoData, SPDRP_ENUMERATOR_NAME , &Buffer, (PULONG)&BufSize))
DevValue = Buffer;
if (DevValue != "ROOT") // 判断设备不是虚拟设备
{
NetCard = new TNetCardStruct;
NetCard->Id = DeviceId;
NetCard->Name = "<Unknown Device>";
if (GetRegistryProperty(hDevInfo, &DeviceInfoData, SPDRP_DRIVER , &Buffer, (PULONG)&BufSize))
if (GetRegistryProperty(hDevInfo, &DeviceInfoData, SPDRP_DEVICEDESC , &Buffer, (PULONG)&BufSize))
NetCard->Name = Buffer;
NetCard->Changed = false;
NetCard->IsDisable = false;
NetCard->Enabled = GetNetCardState(DeviceInfoData.DevInst) == gdsEnabled;
NetCard->InitState = NetCard->Enabled;
NetDeviceList->Add(NetCard);
}
}
}
}
//---------------------------------------------------------------------------
bool __fastcall GetRegistryProperty(HDEVINFO DeviceInfoSet,
PSP_DEVINFO_DATA DeviceInfoData, ULONG Property, PVOID Buffer, PULONG Length)
{
while (!SetupDiGetDeviceRegistryProperty(DeviceInfoSet,
DeviceInfoData, Property, NULL, (BYTE *)*(TCHAR **)Buffer, *Length, Length))
{
if (GetLastError() == ERROR_INSUFFICIENT_BUFFER)
{
if (*(LPTSTR *)Buffer) LocalFree(*(LPTSTR *)Buffer);
*(LPTSTR *)Buffer = (PCHAR)LocalAlloc(LPTR,*Length);
}
else return false;
}
return (*(LPTSTR *)Buffer)[0];
}
sfemil
2003-10-30
打赏
举报
回复
你可以使用NetBios或者winsock等直接进行网络编程。你只要句柄干什么?
WINDOWS下鼠标移动
获得
句柄
(
句柄
id+html颜色值).zip
在Windows操作系统中,"
句柄
"是一个非常关键的概念,它是一个唯一标识系统中对象的整数值,如窗口、控件、
设备
驱动等。这个压缩包文件"WINDOWS下鼠标移动
获得
句柄
(
句柄
id+html颜色值).zip"提供了一个开发工具,...
获得
当前
句柄
- 对于打印机或显示器等
硬件
设备
,通常通过
设备
驱动程序提供的函数来获取
句柄
。 4. **使用`GetConsoleWindow`获取控制台窗口
句柄
**: 当你的应用程序运行在控制台上时,可以通过`GetConsoleWindow`函数获取到...
MFC
句柄
截屏
1. 获取桌面窗口
句柄
:通过调用`FindWindow(NULL, NULL)`可以
获得
桌面窗口的
句柄
。 2. 获取窗口大小:使用`GetClientRect()`或`GetWindowRect()`函数获取窗口的矩形区域。 3. 创建位图:创建一个与目标窗口大小相...
遍历所有
硬件
信息VS2008工程
它允许开发者指定
设备
类别,例如所有已安装的
硬件
设备
、系统
设备
或者所有即插即用
设备
。通过提供适当的参数,我们可以获取到一个
设备
信息集(DeviceInfoSet),这是一个包含系统中对应
设备
对象的
句柄
。 接下来,`...
HID
设备
遍历
标题中的“HID
设备
遍历”指的是在编程中查找并管理连接到计算机的Human Interface Device(HID)
设备
...对于开发需要与
硬件
设备
直接通信的应用,如游戏控制器软件或自定义输入
设备
管理工具,掌握这些知识是至关重要的。
Windows SDK/API
1,222
社区成员
8,136
社区内容
发帖
与我相关
我的任务
Windows SDK/API
C++ Builder Windows SDK/API
复制链接
扫一扫
分享
社区描述
C++ Builder Windows SDK/API
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章