`
yexin218
  • 浏览: 970686 次
  • 性别: 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
分享到:
评论

相关推荐

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

    Android 蓝牙驱动开发总结 Android 蓝牙驱动开发是 Android 开发者不可错过的一部分,特别是初学者和初级工程师。理解 Android 蓝牙驱动开发是掌握 Android 蓝牙开发的关键。本文将从蓝牙基本概念、Android 蓝牙...

    NDIS 驱动开发 网络驱动 开发指南

    总结,NDIS驱动开发是一个复杂而重要的任务,它涉及到操作系统内核层面的编程,需要对网络协议和硬件工作原理有深入理解。通过学习和实践NDIS_中间层驱动程序(IMD)开发人员指南,开发者可以掌握创建高效、可靠的网络...

    [野火]《嵌入式Linux驱动开发实战指南——基于i.MX6ULL系列》

    本资源总结了基于 i.MX6ULL 系列的嵌入式 Linux 驱动开发实战指南,涵盖了从 SDK 目录结构到驱动开发的各个方面。下面是从该资源中总结出的知识点: 1. 嵌入式 Linux 驱动开发概述 嵌入式 Linux 驱动开发是指在...

    组态王驱动开发简要说明与演示

    总结来说,组态王驱动开发是一项技术含量较高的任务,涉及到硬件设备知识、通信协议理解、编程技能和调试能力。通过本文的简要说明,希望能为初学者提供一个清晰的入门路径,并在实践中不断深入学习,提升自己的专业...

    Android驱动开发与移植实战详解_android驱动_android驱动_android_

    总结,Android驱动开发与移植实战不仅涉及硬件层面的知识,还需要理解Linux内核和Android系统架构。通过实际项目经验积累,开发者可以掌握驱动的开发、移植和优化技巧,提升Android系统的性能和稳定性。在实践中,...

    Windows驱动开发资料

    总结来说,这份"Windows驱动开发资料"是一份全面的学习资源集合,涵盖了理论知识、实践案例、开发工具和帮助文档,无论你是初学者还是经验丰富的开发者,都能从中获益。通过深入学习和实践,你可以掌握创建高效、...

    MCGS_脚本驱动开发工具

    总结,MCGS脚本驱动开发工具以其简单易用和高度灵活性,为用户提供了强大的定制能力,是实现工业自动化控制的重要手段。通过深入理解和熟练运用这一工具,用户可以打造出更加符合自身需求的监控系统,提高生产效率和...

    inux设备驱动开发详解:基于最新的Linux4.0内核配套光盘

    《Linux设备驱动开发详解:基于最新的Linux4.0内核配套光盘》一书由宋保华编写,针对Linux4.0内核进行了深入浅出的解析与实践指导。本书结合了理论与实践,旨在帮助读者掌握Linux设备驱动程序的设计与开发技能。 ##...

    Android之蓝牙驱动开发总结

    "Android 蓝牙驱动开发总结" Android 蓝牙驱动开发是一种复杂的技术领域, 涉及到蓝牙协议栈、HCI 层、L2CAP 层、SDP 层等多个层面。本文将对 Android 蓝牙驱动开发进行总结,包括底层到上层的蓝牙驱动开发,及其在...

    Windows驱动开发技术详解

    总结来说,Windows驱动开发是一个复杂但极具挑战性的领域,涉及到硬件交互、内核编程、调试技巧等多个方面。掌握这项技术不仅能提升个人技能,也为解决硬件兼容性问题和优化系统性能提供了可能。

    linux驱动开发总结

    Linux 驱动开发总结 本文总结了 Linux 驱动开发的相关知识点,包括驱动开发的基本概念、IO 模型、异步 IO、阻塞 IO、文件定位操作、内存管理等。 一、驱动开发基本概念 * 驱动开发可以分为三个大类:字符设备、块...

    ASIO音频驱动开发指南2.0

    ### ASIO音频驱动开发指南2.0 - 关键知识点解析 #### ASIO音频驱动的作用与原理 ASIO(Audio Stream Input Output),作为一种专业级的音频输入输出标准,旨在为音频编辑和录制提供低延迟的数据传输服务。相比于...

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

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

    pci9052驱动开发手册

    根据文件提供的内容,下面详细阐述了PCI9052驱动开发手册中涉及的相关知识点。 ### PCI9052驱动开发概述 PCI9052是PLX Technology生产的一款PCI桥接芯片,广泛应用于数据采集卡、通信卡和工业自动化等领域。驱动...

    Linux驱动程序开发资料汇集

    本压缩包包含了一系列丰富的学习资源,涵盖了Linux驱动开发的基础理论到实践案例,适合对Linux驱动开发感兴趣的初学者和进阶者。 1. "Prentice.Hall.Essential.Linux.Device.Drivers.Apr.2008.chm":这是一本由...

    史上最简单的VS2008+WINDDK驱动开发环境搭建

    ### 最简化的VS2008+WINDDK驱动开发环境搭建详解 #### 一、概述 本篇文章将详细介绍如何快速地在Visual Studio 2008与Windows Driver Development Kit (WDK)环境下搭建驱动程序开发环境。通过遵循本文提供的步骤,...

    windows驱动开发技术详解以及源代码

    总结,"Windows驱动开发技术详解"资源为初学者提供了一个全面的学习平台,涵盖了驱动开发的基础知识、关键技术和实践经验。通过学习和实践,开发者可以掌握驱动开发的核心技能,从而更好地为硬件设备编写高效、稳定...

Global site tag (gtag.js) - Google Analytics