再开一贴,势要解决此问题;通过 CreateFile 打开无线网卡,并使用 DeviceIoControl 问题?

xjb2001 2007-03-19 10:04:31
我从 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards

得到了 网卡的名字,使用

memset(SymbolicLinkA,0,MAX_PATH);
strcpy(SymbolicLinkA,"\\\\.\\Global\\");
strcat(SymbolicLinkA,adaptername);//{6EFC6662-3A56-43E1-ABCE-0C4EAE89CC3B}

DeviceHandle = CreateFile(SymbolicLinkA, GENERIC_READ,
FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,INVALID_HANDLE_VALUE);

这步是 OK 的

result = DeviceIoControl(DeviceHandle,
pBIOCQUERYOID,
oidData1
buffLen1,
oidData1,
buffLen1,
&dwByteCount,
NULL//&lap
);
但是这步就不行了

---------------------------
如果使用了 winpcap 的 PacketOpenAdapter 操作以后(它是用这个 linkname "\\Device\\NPF_adaptername")

那么使用 "\\\\.\\NPF_adaptername" 使用上面的CreateFile 和 DeviceIoControl是成功的,否则无法成功


如果没有装 WINPCAP ,那怎么 CreateFile 并且成功的 DeviceIoControl ??


此贴解决,和上个帖子一起放分;





...全文
396 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xjb2001 2007-03-30
  • 打赏
  • 举报
回复
那用编码的方式怎么获取到设备的 linkname 和 docname

wangk 2007-03-30
  • 打赏
  • 举报
回复
用DriverStudio的Symbolic Link Viewer找出设备名。或则从设备驱动里反汇编提取。
xjb2001 2007-03-30
  • 打赏
  • 举报
回复
WINPCAP 定义的 \\\\.\\NPF_{D4F45ACF-82C4-47E0-B10D-E7525000CA1C} 怎么操作都没问题

如果卸载了WINPCAP 就不行了

谁知道 没装 WINPCAP 如果打开网卡并操作之?
xjb2001 2007-03-30
  • 打赏
  • 举报
回复
如果使用

DWORD dwByteCount = 0;
BOOL result;
result = DeviceIoControl(DeviceHandle,
IOCTL_NDIS_QUERY_GLOBAL_STATS,
oidData1,//mytest,
buffLen1,//sizeof("hello,herolib!"),
oidData1,
buffLen1,
&dwByteCount,
NULL//&lap
);

la = GetLastError();


可以操作成功,也没有任何错误,但是 oidData1 中不会有任何的返回值
palmax 2007-03-20
  • 打赏
  • 举报
回复
result = DeviceIoControl(....)

把 result的值放到vc自带的errlookup里看下 到底是什么错
squiffy 2007-03-20
  • 打赏
  • 举报
回复
关注中
xjb2001 2007-03-20
  • 打赏
  • 举报
回复
没人看到?


顶之

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧