liio
驱动小牛
驱动小牛
  • 注册日期2005-12-24
  • 最后登录2022-06-16
  • 粉丝4
  • 关注1
  • 积分24分
  • 威望343点
  • 贡献值0点
  • 好评度171点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:6134回复:23

终于做好了无线WLAN的搜索程序.

楼主#
更多 发布于:2007-12-28 12:41
带个简单的数据包过滤.
个人感觉其实做事情只要去做,困难还是能克服的.

其实这个感觉很简单,自己处理MPQueryInformation和MPSetInformation就搞定了。

只是对802.11很陌生。平时本本的无线也很少开。

其中有个地方不是很明白。还请各位大牛指导下。(其实WDK有说。只是小弟英文不好,费力)

得到AP列表我是这样做的.先发送OID_802_11_BSSID_LIST_SCAN
再发送OID_802_11_BSSID_LIST。

为什么要这样做呢?

我看到很多朋友都是只发送OID_802_11_BSSID_LIST。
我测试的时候OID_802_11_BSSID_LIST_SCAN发送出去后会得到 GetLastError = 31的错误码。也就是连接到系统的设备未发挥作用。

测试环境:

Win XP SP2

T60 intel 3945ABG

nResult = PtQueryInformation(
        g_hDeviceHandle,
        OID_802_11_BSSID_LIST_SCAN,
        NULL,
        0,
        &ReturnedCount
        );

    Sleep(2000);

    ZeroMemory(pBssidList ,BufferLength);
    nResult = PtQueryInformation(
        g_hDeviceHandle,
        OID_802_11_BSSID_LIST,
        pBssidList,
        BufferLength,
        &ReturnedCount
        );

Chequer
驱动牛犊
驱动牛犊
  • 注册日期2008-10-07
  • 最后登录2011-08-26
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望144点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2009-07-08 11:54
这个功能Windows已经帮我们全部做好了,你完全不需要自己写任何Protocol driver。你要做的,就是写个好的GUI,然后呼叫Native Wifi Functions。
primemarshal
驱动牛犊
驱动牛犊
  • 注册日期2009-05-04
  • 最后登录2009-09-17
  • 粉丝0
  • 关注0
  • 积分14分
  • 威望111点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2009-05-31 17:51
各位大虾:  我最近在学习usb wlan 开发, 可是在  调用 IoCallDriver  的时候返回 错误代码: 0xC0000010,  找了很久, 没有找出原因, 请大虾们指教啊,       代码如下:
NTSTATUS usbwifiSubmitUrbSynch(
    IN  PUSBWIFI_ADAPTER            Adapter,
    IN  PURB                        Urb
    )
{
    NTSTATUS            status;
    PIRP                irp;
    IO_STATUS_BLOCK     ioStatus;
    KEVENT              event;
    PIO_STACK_LOCATION  irpStack;

    usbwifiDebugPrint(DBG_IO, DBG_INFO, __FUNCTION__"++");

    KeInitializeEvent(&event, NotificationEvent, FALSE);

    irp = IoBuildDeviceIoControlRequest(
            IOCTL_INTERNAL_USB_SUBMIT_URB,                                    //IOCTL_INTERNAL_USB_SUBMIT_URB,
            Adapter->LowerDeviceObject,
            NULL,
            0,
            NULL,
            0,
            TRUE,
            &event,
            &ioStatus
            );

    if (irp != NULL)
    {
        irpStack = IoGetNextIrpStackLocation(irp);
        irpStack->Parameters.Others.Argument1 = Urb;

        status = IoCallDriver(Adapter->LowerDeviceObject, irp);
        if (status == STATUS_PENDING)
        {
            KeWaitForSingleObject(
                &event,
                Executive,
                KernelMode,
                FALSE,
                NULL
                );
            
            status = ioStatus.Status;    
        }
    }
    else
    {
        status = STATUS_INSUFFICIENT_RESOURCES;
    }

    usbwifiDebugPrint(DBG_IO, DBG_INFO, __FUNCTION__"--. STATUS %x", status);

    return status;
}
新手上路
yangvip
驱动牛犊
驱动牛犊
  • 注册日期2009-02-26
  • 最后登录2009-03-26
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望81点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2009-03-11 09:18
已经做好了,解决了问题。
yangvip
驱动牛犊
驱动牛犊
  • 注册日期2009-02-26
  • 最后登录2009-03-26
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望81点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2009-03-02 20:42
我用ntddndis.h头文件的时候,出现错误,如下
我用这个头文件的时候,出现的错误是这样的
d:\winddk\2600\inc\wxp\ntddndis.h(101) : error C2146: syntax error : missing ';' before identifier 'Offset'
d:\winddk\2600\inc\wxp\ntddndis.h(101) : error C2501: 'ULONG_PTR' : missing storage-class or type specifiers
d:\winddk\2600\inc\wxp\ntddndis.h(101) : error C2501: 'Offset' : missing storage-class or type specifiers
请问是什么原因啊?我用的是VC++6.0和DDK(XP版本的)
capitel
驱动牛犊
驱动牛犊
  • 注册日期2004-09-07
  • 最后登录2008-11-15
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2008-07-20 22:32
http://www.codeproject.com/KB/IP/wlanscan_ndis.aspx?fid=476748&df=90&mpp=25&noise=3&sort=Position&view=Quick&select=2458800中有一个源代码的例子,可以下载,大家可以去看看.
BS,不提供源代码只是片言支角的.
jw212
驱动牛犊
驱动牛犊
  • 注册日期2008-05-08
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望64点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2008-05-19 11:36
vista下的呢,有人做过没有啊?
stonne
驱动牛犊
驱动牛犊
  • 注册日期2008-05-16
  • 最后登录2008-07-02
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望14点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2008-05-16 22:49
原来也很简单嘛~
一定要活着!
caicaileo
驱动牛犊
驱动牛犊
  • 注册日期2006-08-22
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望89点
  • 贡献值0点
  • 好评度43点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2008-05-15 21:00
hwzhanghw

你的问题是要定义宏#define ndis5好象是记不清了 你仔细找头文件
zlb628
驱动牛犊
驱动牛犊
  • 注册日期2008-05-10
  • 最后登录2008-10-20
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望4点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2008-05-14 22:00
请教楼主:
 你的WLAN搜索程序 能不能设置无线网络密码?我已经实现了WLAN无线网络列表,现在要编程实现设置无线网络密码,请问楼主能指点下吗?
我邮箱zlb628@126.com
谢谢
qq312873977
驱动牛犊
驱动牛犊
  • 注册日期2008-04-16
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望5点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2008-04-18 20:49
楼主,你的源码能否邮一份给小弟,找了好久,都入不了门,太需要了,感谢(邮箱:baili12345@163.com),我会感激涕零的!!
yexin218
驱动牛犊
驱动牛犊
  • 注册日期2008-02-22
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分72分
  • 威望384点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2008-03-30 15:30
正在学习中啊
hwzhanghw
驱动牛犊
驱动牛犊
  • 注册日期2008-03-28
  • 最后登录2008-04-14
  • 粉丝0
  • 关注0
  • 积分90分
  • 威望10点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2008-03-30 09:43
楼主或是哪位大哥能把程序发一份给我嘛,我在引用NDIS.H的时候总是出错,万分感谢!
hwzhanghw@163.com
yma5423
驱动牛犊
驱动牛犊
  • 注册日期2008-03-16
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分60分
  • 威望7点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2008-03-29 18:58
哈哈,我也实现自动检测无线网络的功能了! 还真是挺简单--在你看明白以后!
hwzhanghw
驱动牛犊
驱动牛犊
  • 注册日期2008-03-28
  • 最后登录2008-04-14
  • 粉丝0
  • 关注0
  • 积分90分
  • 威望10点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2008-03-28 15:08
请问楼主,是怎么引用NDIS.H的,我引用的时候总会报错,PCONTEXT未定义,是什么原因呢?
boywhp
驱动中牛
驱动中牛
  • 注册日期2007-08-09
  • 最后登录2015-04-24
  • 粉丝2
  • 关注0
  • 积分1105分
  • 威望515点
  • 贡献值0点
  • 好评度254点
  • 原创分1分
  • 专家分0分
15楼#
发布于:2008-03-17 19:24
哈哈!笨蛋
zzgzzzx
驱动牛犊
驱动牛犊
  • 注册日期2003-05-13
  • 最后登录2009-02-22
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望15点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2008-03-14 16:35
回 楼主(liio) 的帖子
楼上,你的源码能否邮一份给小弟,找了好久,都入不了门,太需要了,感谢(邮箱:zzgzzzx@gmail.com)
liio
驱动小牛
驱动小牛
  • 注册日期2005-12-24
  • 最后登录2022-06-16
  • 粉丝4
  • 关注1
  • 积分24分
  • 威望343点
  • 贡献值0点
  • 好评度171点
  • 原创分0分
  • 专家分0分
  • 社区居民
17楼#
发布于:2008-01-19 01:00
支持楼上,其实代码就在DDK中。
大家熟悉下协议。按照协议把OID下发下去。就能完成了
xiaoxin86
驱动牛犊
驱动牛犊
  • 注册日期2007-11-12
  • 最后登录2011-04-19
  • 粉丝0
  • 关注0
  • 积分12分
  • 威望106点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2008-01-18 23:18
我也做好了。windowsXP, DDK2003, 利用WINDDK\3790.1830\src\network\ndis\ndisprot的例子,ndisprot是一个网络协议驱动,打开ndisprot句柄,利用OpenNdisDevice把ndisprot句柄和你的无线网卡 devicename关联起来, 利用OID_802_11_BSSID_LIST_SCAN,OID_802_11_BSSID_LIST即可获得列表和相应的信号强度。仔细看ndisprot的例子和说明,应该没什么问题!这个问题我做了四天才做出来,不要放弃哦!
cymvp
驱动牛犊
驱动牛犊
  • 注册日期2008-01-08
  • 最后登录2009-04-03
  • 粉丝0
  • 关注0
  • 积分200分
  • 威望21点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2008-01-17 00:38
楼主牛人啊!本人也在学无线驱程,只是无从下手,楼主也给我发一份大作吧!
cymvpn1@126.com
上一页
游客

返回顶部