`
yexin218
  • 浏览: 959377 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

驱动开发资料汇总

阅读更多

本文主要记录关于网卡驱动从NDIS 5.1移植到6.0过程的错误信以及解决方法息总结。(纯属个人笔记)

  1. To run in the NDIS 6.0 environment, NDIS 5.x miniport drivers must be modified as follows:  Build Environment -->Replace the preprocessor definition NDIS51_MINIPORT_DRIVER with NDIS60_MINIPORT_DRIVER.  主要修改source文件中的两个编译条件    C_DEFINES=$(C_DEFINES) -DNDIS51_MINIPORT=1  C_DEFINES=$(C_DEFINES) -DNDIS51=1  修改成: C_DEFINES=$(C_DEFINES) -DNDIS60_MINIPORT=1C_DEFINES=$(C_DEFINES) -DNDIS60=1

  2. 倘若在更新代码过程中,由于一些旧的函数已经不被使用了,所以你需要重新在.h文件中定义新的函数(比如从MPInitialize到 MPInitializeEX等),而且你也在.c文件中实现了该函数,可是你可能在其他.c文件用到这个函数,可是编译器还是不错说该方法没有申明,比如error C2065: MPInitializeEX: undeclared identifier。=>1、如果你确定你已经申明(实现与否次要),那么没有找到其他的解决方法,试试看把驱动目录下的,objchk_wlh_x86目录删除,重新编译也许就能解决问题了。 2、如果上面的不管用,那还要考虑一种特殊情况:那就是在NDIS5.1的时候,经常会把一些是51特性的函数定义在一个//#ifdef NDIS51_MINIPORT里面,所以你现在是NDIS6.0,如果没有修改这个定义,自然找不到你的函数定义,所以检查看看~
  3. 关于Windows7中是否可以使用WlanEnumInterfaces 来显示虚拟网络接口?答案是:单张无线网卡的不行,如果有多张,未知。参考:On Windows 7 and later, the operating system installs a virtual device if a Hosted Network capable wireless adapter is present on the machine. This virtual device normally shows up in the “Network Connections Folder” as ‘Wireless Network Connection 2’ with a Device Name of ‘Microsoft Virtual WiFi Miniport adapter’ if the computer has a single wireless network adapter. This virtual device is used exclusively for performing software access point (SoftAP) connections and is not present in the list returned by the WlanEnumInterfaces function. The lifetime of this virtual device is tied to the physical wireless adapter. If the physical wireless adapter is disabled, this virtual device will be removed as well. This feature is also available on Windows Server 2008 R2 with the Wireless LAN Service installed.
  4. GUID结构以及输出:GUID结构如下:
    GUID结构如下:
    typedef struct _GUID
    {
    DWORD Data1;
    WORD Data2;
    WORD Data3;
    BYTE Data4[8];
    } GUID;
     GUID就是一个128位的16进制整数,GUID 的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中每个 x 是 0-9 或 a-f 范围内的一个十六进制的数字。参考关于GUID. 如果使用GetAdatperAddress()方法读取出NET_IF_NETWORK_GUID.
    char szBuf[64];
        sprintf_s(szBuf, 64, "{%08x-%04x-%04x-%02X%02X-%02X%02X%02X%02X%02X%02X}",
        pCurrAddresses->NetworkGuid->Data1, pCurrAddresses->NetworkGuid->Data2, pCurrAddresses->NetworkGuid->Data3,
        pCurrAddresses->NetworkGuid->Data4[0], pCurrAddresses->NetworkGuid->Data4[1],
        pCurrAddresses->NetworkGuid->Data4[2], pCurrAddresses->NetworkGuid->Data4[3],
        pCurrAddresses->NetworkGuid->Data4[4], pCurrAddresses->NetworkGuid->Data4[5],
        pCurrAddresses->NetworkGuid->Data4[6], pCurrAddresses->NetworkGuid->Data4[7]);
        printf("%s", szBuf);
      输出结果类似:GUID: b568ee76-6d17-4a3a-a2f5-269c52fd6de
  5. Wireless Hosted Network Sample :wireless Hosted Network sample that demonstrates the use of wireless Hosted Network functions is included with the Microsoft Windows Software Development Kit (SDK). Wireless Hosted Network sample can be compiled on the Windows SDK for Windows 7.
  6. 激活Window7 Virtual WiFi: 正如第三点所说的,如果你只有一张无限网卡,虚拟出来的网卡好像只能作为SoftAP用,不能当做真是网卡连接其他网络。如果你的网卡是Intel芯片的,下载最新驱动(32位64位 )。安装之后就可以看到如图:多一张网络接口:Wireless Network connection2,设备名字:Microsoft Virtual Miniport Driver.

    激活方法如下:
    • Open an elevated command line with administrative privileges and type
      netsh wlan set hostednetwork mode=allow ssid=Test key=password
      replacing the name and password with your own preference.
    • Start the adapter by
      netsh wlan start hostednetwork
    • Share an existing connection to it by going to the “Properties” of a connection, selecting the “Sharing” tab and enabling ICS and choosing the corresponding Virtual WiFi adapter.
     当然命令行方式不够方便,你可以下载一个软件:Connectify  可用图形界面实现该功能。
  7. 如何使用动态链接库(包括创建和使用):Using Dynamic-Link Libraries   中文例子
  8. INF安装信息文件
  9. UNREFERENCED_PARAMETER(P) (P)的作用
  10. 我在OSRONLINE发帖纪录:A:IRQ_NOT_LESS_OR_EQUAL Bulu Screen Error B, Bluescreen when calling NdisFSendNetBufferLists    C, Acquiring network address of wireless NIC  D, To Free NetBufferListPool
  11. Windows 异步I/O教程
  12. OverLapped I/O学习
  13.  CreateEvent函数函数功能描述:创建或打开一个命名的或无名的事件对象
    HANDLE CreateEvent(
      LPSECURITY_ATTRIBUTES lpEventAttributes,   // 安全属性
      BOOL bManualReset,   // 复位方式
      BOOL bInitialState,   // 初始状态
      LPCTSTR lpName   // 对象名称
    );
    
     参数:

    lpEventAttributes:
          [输入]一个指向 SECURITY_ATTRIBUTES结构的指针,确定返回的句柄是否可被子进程继承。如果lpEventAttributes是NULL,此句柄不能被继承。
          Windows NT/2000:lpEventAttributes的结构中的成员为新的事件指定了一个安全符。如果lpEventAttributes是NULL,事件将获得一个默认的安全符。

    bManualReset:
          [输入]指定将事件对象创建成手动复原还是自动复原。如果是 TRUE,那么必须用ResetEvent函数来手工将事件的状态复原到无信号状态。如果设置为FALSE,当事件被一个等待线程释放以后,系统将会自动将事件状态复原为无信号状态。

    bInitialState:
          [输入]指定事件对象的初始状态。如果为TRUE,初始状态为有信号状态;否则为无信号状态。

    lpName:
          [输入]指定事件的对象的名称,是一个以0结束的字符串指针。名称的字符格式限定在MAX_PATH之内。名字是对大小写敏感的。
    示例代码:
          // 创建一个有名的,不能被继承的,手动复原,初始状态是无信号状态的事件对象
          Handle h = CreateEvent(NULL,TRUE,FALSE,“MyEvent”);
  14. DeviceIoControl函数,这里介绍了关于OVERLAPPED的资料
  15. 线程中CreateEvent和SetEvent及WaitForSingleObject的用法
  16. UNICODE_STRING,在KdPrint中打印方式:
    KdPrint(("%ws",PunicodeBuf->Buffer));
    或者
    KdPrint(("%S",PunicodeBuf->Buffer))
      以及
    UNICODE_STRING uniString;
    KdPrint(("%wZ\n",&uniString));
     
  17. Cloned NET_BUFFER_LIST Structures:

     http://msdn.microsoft.com/en-us/library/ff544929.aspx,
  18. Relationships Between NET_BUFFER_LIST Generations
  19. Derived NET_BUFFER_LIST Structures
  20. 查看wdk build 参数设置: build /? 就可以在dos窗口查看

 

  • 大小: 17.1 KB
分享到:
评论

相关推荐

    V4L2开发资料汇总

    花了很大的经历,搜集并整理了v4l2开发的文档,这些文档写的比较好,并非网上胡编乱造乱转发的资料,先汇总后共享给大家,资源列表: ①linux驱动学习笔记Camif ②V4L2 spec 中文 v0.625 ③v4l2-api-document ④v4l2...

    《竹林蹊径 深入浅出Windows驱动开发》.zip

    《竹林蹊径:深入浅出windows驱动开发》是作者根据多年的工作学习经验,总结的第一手驱动开发资料。《竹林蹊径:深入浅出windows驱动开发》更多的是经验之谈,一些实践中的小发现小意外,颇为书中内容添彩。 《竹林...

    ( [竹林蹊径:深入浅出Windows驱动开发(补全版)].rar )

    竹林蹊径:深入浅出windows驱动开发》是作者根据多年的工作学习经验,总结的第一手驱动开发资料。 《竹林蹊径:深入浅出windows驱动开发》更多的是经验之谈,一些实践中的小发现小意外,颇为书中内容添彩。 《竹林蹊径...

    linux驱动开发总结

    linux驱动开发总结

    竹林蹊径 深入浅出Windows驱动开发

    竹林蹊径 深入浅出Windows驱动开发:本书是作者根据多年的工作学习经验,总结的第一手驱动开发资料。但它不是一本深刻到最底层的原理性的书,有这种预期的读者会失望。本书更多的是经验之谈,一些实践中的小发现小...

    windows驱动开发技术详解-part2

    这是书的光盘。共分为两个部分,这是第一部分。 本书由浅入深、循序渐进地... 本章总结了在内核模式下的四种等待方法,读者可以利用这些方法灵活地用在自己的驱动程序中。最 后本章还介绍了如何对IRP的超时情况进行...

    Windows驱动开发技术详解的光盘-part1

    用实例详细讲解PCI、USB、虚拟串口、虚拟摄像头、SDIO等驱动程序的开发,归纳了多种调试驱动程序的高级技巧,如用WinDBG和VMWARE软件对驱动进行源码级调试,深入Windows操作系统的底层和内核,透析Windows驱动开发的...

    Android之蓝牙驱动开发总结.pdf

    Android蓝牙开发必备,是初学者,初级工程师学习Android 蓝牙的必备手册。 主要分为三部分 1.打开蓝牙; 2.查找附近已配对或可用的设备; 3.连接设备; 4.设备间数据 交换。

    Android之蓝牙驱动开发总结

    Android之蓝牙驱动开发总结,包括底层到上层以及个各协议层的封装与总结,以及android蓝牙应用程序的开发。

    竹林蹊径——深入浅出Windows驱动开发

    本书是作者根据多年的工作学习经验,总结的第一手驱动开发资料。本书更多的是经验之谈,一些实践中的小发现小意外,颇为书中内容添彩。 本书的特色之一,是对WDF框架做了较多的切入。本书第一个主要内容是(第3~7章...

    嵌入式Linux驱动开发基础总结

    3, 驱动开发中设计到的硬件: * 数字电路知识* ARM硬件知识* 熟练使用万用表和示波器* 看懂芯片手册和原理图 4, linux内核源代码目录结构: * arch/: arch子目录包括了所有和体系结构相关的核心代码。它的每...

    Android蓝牙驱动开发总结..pdf

    Android蓝牙驱动开发总结,详细解析蓝牙驱动的流程,非常好的资料!

    windows驱动开发详解的ppt

    自己看了关于windows驱动开发详解的书,做的一些总结,比较简单,适合初学者;

    史上最强的嵌入式底层驱动开发课程 Linux系统开发+Linux高级程序+主板开发+ARM等

    │ ├15 - GNU开发环境基础_EclipseForLinux.mp4 │ ├16 - Linux高级程序_IO操作1.mp4 │ ├17 - Linux高级程序_IO操作2.wmv │ ├18 - Linux高级程序_IO操作3.mp4 │ ├19 - Linux高级程序_IO操作4.wmv │ ├20 - ...

    LInux驱动开发-问题排查总结

    LInux驱动开发-问题排查总结

    内容是linux驱动开发的一些总结

    内容是linux驱动开发的一些总结

    Android开发案例驱动教程 配套代码

    采用案例驱动模式展开讲解知识点,即介绍案例->案例涉及技术->展开知识点->总结的方式 本书作者从事多年一线开发和培训,讲解知识点力求细致,深入浅出 目 录 前言 第1章 Android操作系统概述 1 1.1 Android...

    安卓sdk开发资料汇总

    Android SDK 中文开发文档、Android 开发环境搭建步骤详细图解、Android2.3用户手册、Android编程入门教程、Android开发从入门到精通、Android开发手册——API函数详解、Android驱动开发入门及手机案例开发分析教程...

    linux下PCI驱动开发

    个人在LINUX做PCI驱动时,总结的一些东西,很基础,适合做PCI驱动入门

Global site tag (gtag.js) - Google Analytics