驱动程序开发大全_驱动程序开发大全下载

       非常感谢大家聚集在这里共同探讨驱动程序开发大全的话题。这个问题集合涵盖了驱动程序开发大全的广泛内容,我将用我的知识和经验为大家提供全面而深入的回答。

1.NVIDIA的驱动程序包含哪些?

2.驱动程序的开发同应用程序的开发相比要注意什么

3.Windows设备驱动程序WDF开发的本书内容

4.如何构造一个简单的USB过滤驱动程序

5.驱动程序的开发技术有哪些

驱动程序开发大全_驱动程序开发大全下载

NVIDIA的驱动程序包含哪些?

       DCH:Declarative Componentized Hardware supported apps(中文:声明性组件化硬件支持应用),而DCH驱动则是微软提出的新驱动程序开发规范,用于基于通用Windows平台的Windows 10版本上安装和运行的驱动程序包。

       GRD:Game Ready Driver,NVIDIA定义的概念,官方宣称主要针对游戏做优化。

       SD:Studio Driver,同样是NVIDIA定义的概念,官方宣称主要针对生产力类应用(比如PR、AE等)做优化。

       介绍

       显示芯片(Video chipset)是显卡的主要处理单元,因此又称为图形处理器(Graphic Processing Unit,GPU),GPU是NVIDIA公司在发布GeForce 256图形处理芯片时首先提出的概念。尤其是在处理3D图形时,GPU使显卡减少了对CPU的依赖,并完成部分原本属于CPU的工作。

       GPU所采用的核心技术有硬件T&L(几何转换和光照处理)、立方环境材质贴图和顶点混合、纹理压缩和凹凸映射贴图、双重纹理四像素256位渲染引擎等,而硬件T&L技术可以说是GPU的标志。

驱动程序的开发同应用程序的开发相比要注意什么

       嵌入式驱动开发需要学以下:

       一:C语言

       嵌入式Linux工程师的学习需要具备一定的C语言基础,C语言是嵌入式领域最重要也是最主要的编程语言,通过大量编程实例重点理解C语言的基础编程以及高级编程知识。包括:基本数据类型、数组、指针、结构体、链表、文件操作、队列、栈等。

       二:Linux基础

       Linux操作系统的概念、安装方法,详细了解Linux下的目录结构、基本命令、编辑器VI ,编译器GCC,调试器GDB和 Make 项目管理工具, Shell Makefile脚本编写等知识,嵌入式开发环境的搭建。

       三:Linux系统编程

       重点学习标准I/O库,Linux多任务编程中的多进程和多线程,以及进程间通信(pipe、FIFO、消息队列、共享内存、signal、信号量等),同步与互斥对共享资源访问控制等重要知识,主要提升对Linux应用开发的理解和代码调试的能力。

       四:Linux网络编程

       计算机网络在嵌入式Linux系统应用开发过程中使用非常广泛,通过Linux网络发展、TCP/IP协议、socket编程、TCP网络编程、UDP网络编程、Web编程开发等方面入手,全面了解Linux网络应用程序开发。

       重点学习网络编程相关API,熟练掌握TCP协议服务器的编程方法和并发服务器的实现,了解HTTP协议及其实现方法,熟悉UDP广播、多播的原理及编程方法,掌握混合C/S架构网络通信系统的设计,熟悉HTML,Javascript等Web编程技术及实现方法。

       五:数据结构与算法

       数据结构及算法在嵌入式底层驱动、通信协议、及各种引擎开发中会得到大量应用,对其掌握的好坏直接影响程序的效率、简洁及健壮性。

       此阶段的学习要重点理解数据结构与算法的基础内容,包括顺序表、链表、队列、栈、树、图、哈希表、各种查找排序算法等应用及其C语言实现过程。

       六:C++ 、QT

       C++是Linux应用开发主要语言之一,本阶段重点掌握面向对象编程的基本思想以及C++的重要内容。图形界面编程是嵌入式开发中非常重要的一个环节。

       由于QT具有跨平台、面向对象、丰富API、支持2D/3D渲染、支持XML、多国语等强大功能,在嵌入式领域的GUI开发中得到了广范的应用,在本阶段通过基于QT图形库的学习使学员可以熟练编写GUI程序,并移植QT应用程序到Cortex-A8平台。

       包括IDE使用、QT部件及布局管理器、信息与槽机制的应用、鼠标、键盘及绘图事件处理及文件处理的应用。

Windows设备驱动程序WDF开发的本书内容

       驱动程序的开发同应用程序的开发相比要注意驱动程序的开发需要非常小心。简单来说就是操作硬件的这么一种程序,由于操作硬件本身有着一定的复杂性和多样性,所以几乎每种OS都提供了比较标准的接口规范,所以我们只能通过这种接口规范来完成程序的入口出口,让我们的硬件设备开始工作等等。

驱动程序的开发含义

       驱动程序即添加到操作系统中的一小块代码,其中包含有关硬件设备的信息当计算机程序请求与某个硬件设备交互时,设备驱动程序充当硬件设备与使用它的程序之间指令的转换器,操作系统并不支持机器上的所有硬件,所以一般来讲硬件厂商都要为自己的硬件编写驱动程序,每个驱动程序都旨在为特定或一组设备工作。

       在计算机上驱动程序使用各种总线接口来联系设备,此外驱动程序一般不直接与用户交互所以很多用户完全不知道它们的存在,驱动程序的开发需要非常小心因为它直接与硬件打交道,同时也与操作系统打交道如果设备驱动程序出现问题,可能会导致系统崩溃这就是为什么需要专业人员或团队来为设备编写驱动程序的原因。

如何构造一个简单的USB过滤驱动程序

       本书主要讨论KMDF,KMDF是WDM的继续,可以把WDM驱动程序转换为KMDF驱动程序。还对UMDF设备驱动程序作了编程入门介绍。

       过去,我研究过如何用DriverStudio开发工具开发Windows下的WDM设备驱动程序,承蒙电子工业出版社的厚爱,出版了《Windows 2000/XP WDM设备驱动程序开发》一书。

       WDF的简单化编程,导致DriverStudio退出了Windows设备驱动程序的开发,将DriverStudio定格在3.2版本。

       从形式上看,KMDF的对象和DriverStudio的类,具有相似的地方。本书的内容安排和《Windows 2000/XP WDM设备驱动程序开发》的基本一致,具体安排如下:

       章 名 主 要 内 容

       第1章 Windows 2000和WDM驱动程序 KMDF是WDM的继续,KMDF构建在WDM之上。对于一些Windows驱动程序的基本概念,初学者仍需要了解,如Windows 2000中的组件、驱动程序种类,以及WDM驱动程序特点等

       第2章 KMDF驱动程序框架 KMDF驱动程序框架由对象和事件回调例程构成。KMDF框架中所有的事物都由对象来表示,各种事件处理都由事件回调例程来完成。学习KMDF编程,主要是学习KMDF的各种对象、对象函数和事件回调例程的编程

       第3章 基本对象 KMDF提供了许多对象,本章只介绍一些基本的对象,如WDFREQUEST对象、WDFQUEUE对象等,还介绍了数据同步访问、字符串操作和QueueSample实例

       第4章 KMDF驱动程序编程入门 介绍Windows Vista下的KMDF驱动程序编程入门,包括KMDF驱动程序编程环境的建立,KMDF的创建、生成及安装过程,以及Win32 Console和MFC两种应用程序的编程

       第5章 KMDF驱动程序和应用程序之间的通信 介绍应用程序与KMDF之间的通信,包括应用程序对KMDF的通信,以及KMDF对应用程序的通信

       第6章 即插即用例程 主要介绍PnP组件、即插即用例程的加载和卸载顺序及PnpPowerSample实例等

       第7章 电源管理 主要介绍系统电源状态与设备电源状态、电源管理控制标志位、设备的唤醒特征和空闲检测、电源管理编程及IdleSample实例等

       第8章 KMDF过滤器驱动程序 描述如何写一个过滤器驱动程序,该驱动程序可位于功能驱动程序的上面或下面,它通过过滤流经它的IRP来修改设备的行为

       第9章 USB设备开发 主要介绍USB设备的配置/接口/端点、USB数据的传输方式、USB描述符、USB编程对象、USB编程(如激活配置与中止配置、同步操作、异步操作)及USBSample实例等

       第10章 PCI设备驱动程序开发 本章就硬件访问、中断处理和DMA传输3个方面展开讨论,并以CY7C09449芯片为例,给出一个经过测试的PCI设备驱动程序实例——PCISample实例。另外,还给出了一个不依靠硬件设备的DMASample实例

       第11章 UMDF驱动程序编程入门 介绍UMDF驱动程序编程入门,包括UMDF驱动程序的创建、生成及安装,以及一个简单的实例编程

       第12章 WinDbg使用介绍 WinDbg是微软提供的一个功能非常强大的调试软件,可以在源代码级别调试Windows下的WDF驱动程序。本章主要介绍用WinDbg调试KMDF和UMDF

       微软推荐的WDF书籍是《Developing Drivers with the Microsoft Windows Driver Foundation》,作者是Penny Orwick和Guy Smith。

       微软提供的学习WDF的中文网站地址是:www. microsoft. com/china/whdc。

       开发工具

       微软提供的WDF驱动程序开发工具包WDK的最新版本是WDK 1.7,可以从其网站下载。

       本书实现WDF驱动程序及应用程序实例所用的工具是:Visual C++ 6.0和WDK 1.7。

       本书配套光盘

       本书配套光盘中含有书中所有实例的驱动程序和应用程序的全部源代码,以及生成的驱动程序和可执行的应用程序。除USBSample和PCISample实例因需要硬件设备的支持,读者无法运行外,其他11个实例均可在Windows XP和Vista下运行。

       本书特点

       编程入门:详细的步骤介绍,初学者的良师益友。

       应用实例:对程序作了必要的注释,了解驱动程序编程的捷径。

       简单实用:KMDF的编程非常简单,Winows硬件开发工程师必须掌握。

       理解深刻:笔者精通Winows设备驱动程序开发和硬件开发,所有实例均为自己创造,每个实例都有其独特意义,笔者用实例诠释自己对KMDF的理解和认识。

       微软推荐的WDF书籍是“理论派”,以讲解理论为主,讲得非常详细和全面;本书是“实战派”,全书以实例为主,用实例带你快速入门。

       善于学习,勤于思考,勇于实践。用这句话与投身硬件开发的青年学子共勉。

       希望这本书能对您现在或将来的工作有所帮助。

       本书得以顺利出版,要特别感谢周利莉的一贯支持;感谢何海洋和赵庆花的支持;感谢陈建波和何亚垒的支持;感谢朱沭红编辑和电子工业出版社。

       由于作者的理论水平有限,书中难免出现差错和遗漏,敬请广大计算机应用开发人员批评指正,

       十年时间,跟踪Windows设备驱动程序的开发,驱动程序VxD->WDM->KMDF,工具VtoolsD->DDK、DriverWorks->WDK,但愿WDF长久。别了WDM,别了DriverStudio。

       缺月挂疏桐,漏断人初静。谁见幽人独往来,缥缈孤鸿影。……

       武安河

       2009年元旦

驱动程序的开发技术有哪些

       本文分三部分来介绍如何构造一个简单的USB过滤驱动程序,包括“基本原理”、“程序的实现”、“使用INF安装”。此文的目的在于希望读者了解基本原理后,可以使用除DDK以外最流行也最方便的驱动开发工具DriverStudio来实现一个自己的过滤驱动,并正确地安装。

       一、基本原理

       我们知道,WDM(和KDM)是分层的,在构造设备栈时,IO管理器可以使一个设备对象附加到另外一个初始驱动程序创建的设备对象上。与初始设备对象相关的驱动程序决定的IRP,也将被发送到附加的设备对象相关的驱动程序上。这个被附加的驱动程序便是过滤驱动程序。如右图,过滤驱动可以在设备栈的任何层次中插入。IO管理器发出的IRP将会沿着右图的顺序从上往下传递并返回。因此,我们可以使用过滤驱动程序来检查、修改、完成它接收到的IRP,或者构造自己的IRP。

        上面这种文字是很枯燥的,好在“前人”已经写过一些范例以供我们更好地理解这些概念。读过Waltz Oney的《Programming Windows Driver Mode》一书的读者大概都知道Waltz Oney提供的范例中有一个关于USB过滤器(第九章)的例子,而在此基础上,《USB Design By Example》()的作者John Hyde实现了一个USB键盘过滤驱动程序,即给此程序增加了一个“拦截(Intercept)”功能来处理USB键盘的Report以实现特定的功能:当驱动程序在IRP_MJ_INTERNAL_DEVICE_CONTROL设置的完成例程从USB设备拦截到一个Get_Report_Descriptor时,拦截程序将此Descriptor中的USAGE值从“Keyboard”改为“UserDefined”,再返回给系统。

       我们可以从这个例子中获得一些灵感,比如,在Win2k下,键盘是由OS独占访问的,我们可以通过这种方式使之可以让用户自由访问;我们也可以拦截其他Report_Descriptor,将部分键重新定义,以满足特殊的要求;如果你愿意再做一个用户态的程序,你还可以将你拦截到的键值传递给你的用户态程序,以实现象联想、实达等国内电脑大厂出品的那些键盘上的各种实用的功能。

       二、程序的实现

       Waltz Oney和John Hyde的例子已经写得很详细了,读者可以不用修改一个字节便顺利地编译生成一个过滤驱动程序。本文的目的在于使用DriverStudio组件Driverworks来实现同样的功能。

       相信读者读到这篇文章时,已经对DriverStudio有了很多的了解。DriverStudio作为一个以C++为基础的“快速”驱动开发工具,它封装了基本上所有的DDK的函数,其集成在VC++中的DriverWizard,可以很方便地引导你完成设备驱动程序开发的全过程,能根据你的硬件种类自动生成设备驱动程序源代码,并提供了很多范例程序。当然,这些例子中便包含一个USB Filter驱动程序的框架。在不侵犯版权的前提下,充分利用现有共享的、免费的、授权的代码是我们的一贯作法。我们下面便以此范例为基础来作修改。

       我们的目的是做一个HID小驱动程序hidusb.sys的Lower Filter,它附加在“人机接口设备” ,通过拦截USB的Get_Report_Descriptor来修改其返回值,当它发现该Descriptor的Usage 为“Keyboard”时,将其改为“UserDefined”,如此我们便可以完全控制这只键盘。具体做法是,拦截IRP_MJ_INTERNAL_DEVICE_CONTROL,并检查其IOCTL代码及URB,如果满足IOCTRL功能代码为IOCTL_INTERNAL_USB_SUBMIT_URB以及URB功能代码为URB_FUNCTION_GET_DESCRIPTOR_FROM_INTERFACE的条件,即上层驱动发来Get_Report_Descriptor请求时,设置一个完成例程,在这个完成例程中,我们将判断Usage的值,将Usage由“6(Keyboard)”时,将其改为“0(UserDefined)”。

       打开C:\Program Files\NuMega\DriverStudio\DriverWorks\Examples\wdm\usbfilt目录(具体目录依你的DriverStudio所安装的目录不同而不同) ,再打开工程文件usbfilt.dsw,我们先看一下代码。

       程序由两个类组成,一个是Driver类,一个是Device类。Driver类包括:

        入口函数DriverEntry:

       DECLARE_DRIVER_CLASS(UsbFilterDriver, NULL)

       /////////////////////////////////////////////////////////////////////

       // Driver Entry

       //

       NTSTATUS UsbFilterDriver::DriverEntry(PUNICODE_STRING RegistryPath)

       {

        T << "UsbFilterDriver::DriverEntry\n";

        m_Unit = 0;

        return STATUS_SUCCESS;

        // The following macro simply allows compilation at Warning Level 4

        // If you reference this parameter in the function simply remove the macro.

        UNREFERENCED_PARAMETER(RegistryPath);

       }

        AddDevice函数

       NTSTATUS UsbFilterDriver::AddDevice(PDEVICE_OBJECT Pdo)

       {

        T << "UsbFilterDriver::AddDevice\n";

        UsbFilterDevice * pFilterDevice = new (

        static_cast<PCWSTR>(NULL),

        FILE_DEVICE_UNKNOWN,

        static_cast<PCWSTR>(NULL),

        0,

        DO_DIRECT_IO

        )

        UsbFilterDevice(Pdo, m_Unit);

        if (pFilterDevice)

        {

        NTSTATUS status = pFilterDevice->ConstructorStatus();

        if ( !NT_SUCCESS(status) )

        {

        T << "Failed to construct UsbFilterDevice"

        << (ULONG) m_Unit

        << " status = "

        << status

        << "\n";

        delete pFilterDevice;

        }

        else

        {

        m_Unit++;

        }

        return status;

        }

        else

        {

        T << "Failed to allocate UsbFilterDevice"

        << (ULONG) m_Unit

        << "\n";

        return STATUS_INSUFFICIENT_RESOURCES;

        }

       }

        这两段代码基本上和自动生成的代码差不多。AddDevice的作用是构造一个过滤器的实例。

       关键的代码在Device类。在这个类里,我们把过滤器插入设备栈,并拦截IRP,用自己的完成例程来实现特定的功能。

       Device构造函数

       UsbFilterDevice::UsbFilterDevice(PDEVICE_OBJECT Pdo, ULONG Unit) :

        KWdmFilterDevice(Pdo, NULL)

       {

        T << "UsbFilterDevice::UsbFilterDevice\n";

        // Check constructor status

        if ( ! NT_SUCCESS(m_ConstructorStatus) )

        {

        return;

        }

        // Remember our unit number

        m_Unit = Unit;

        // initialize the USB lower device

        m_Usb.Initialize(this, Pdo);

        NTSTATUS status = AttachFilter(&m_Usb); //Attach the filter

        if(!NT_SUCCESS(status))

        {

        m_ConstructorStatus = status;

        return;

        }

        SetFilterPowerPolicy();

        SetFilterPnpPolicy();

       }

       在DDK中,我们用IoAttachDevice将设备对象插入设备栈中。DriverStudio封装了这个函数。在DriverStudio中,其他驱动程序需要用Initialize来初始化设备对象和接口,对于过滤驱动,我们关键是需要Attachfilter将其附加在堆栈中。

       对于大部分如IRP_MJ_SYSTEM_CONTROL等IRP,我们所做的只需用PassThrough(Irp)将其直接往设备栈下层传递,不需要做任何工作。这些代码我们就不一一列举了。下面的部分才是本文的关键。

        我们知道,HIDUSB.SYS是使用内部IOCTRL发出URB给USB类驱动程序(USBD)读取数据的,那么,HIDUSB首先必须构造一个IRP_MJ_INTERNAL_DEVICE_CONTROL,它的IOCTL功能码为IOCTL_INTERNAL_USB_SUBMIT_URB(发出URB的内部IOCTL)。另外,因为我们要检查并修改的是USB键盘某个接口的报告描述,那么这个URB应该是URB_FUNCTION_GET_DESCRIPTOR_FROM_INTERFACE,如下:

       NTSTATUS UsbFilterDevice::InternalDeviceControl(KIrp I)

       {

        T << "UsbFilterDevice::InternalDeviceControl\n";

        // Pass through IOCTLs that are not submitting an URB

       //不是我们感兴趣的IOCTL不要理它

        if (I.IoctlCode() != IOCTL_INTERNAL_USB_SUBMIT_URB)

        return DefaultPnp(I);

        PURB p = I.Urb(CURRENT); // get URB pointer from IRP

       //不是我们感兴趣的URB,也不要理它,

        if (p->UrbHeader.Function !=

       URB_FUNCTION_GET_DESCRIPTOR_FROM_INTERFACE)

        return DefaultPnp(I);

       //符合要求的IRP才被设置完成例程

        return PassThrough(I, LinkTo(DeviceControlComplete), this);

       }

       在设置好条件以后,再来实现完成例程。所有的检查、修改等动作都是在完成例程里面完成的。

       NTSTATUS UsbFilterDevice::DeviceControlComplete(KIrp I)

       {

        PURB p = I.Urb(CURRENT);

        if(p)

        {

       //拦截到设备返回的描述表,

        char* DescriptorBuffer = (char*)p->UrbControlDescriptorRequest.TransferBuffer;

       //指向第三个字节,表示设备Usage属性的值

        DescriptorBuffer += 3;

       //如果值为6则改成0,6表示hid键盘,0表示未知设备

       //在设备管理器里面,原来的hid兼容键盘就不复存在了,取而代之的则是hid兼容设备

        if ((*DescriptorBuffer&0xff) == 6)

        *DescriptorBuffer = 0;

        }

        return I.Status();

       }

       读者可以对照DriverWorks中的例子,直接替换掉(或者修改)上面这两个函数,再编译一下,便可以得到一个完整的键盘过滤器驱动程序。

       其实,只要弄清楚了我们需要做些什么动作,在DriverStudio里面只需要写少量的关键代码,便可实现我们的要求,其余的大部分工作,或有范例可供参考,或有Driver Wizard自动生成。

        从上面可以看出,我们只需要修改这两个函数,拦截合适的IRP,便可以在完成例程里面实现我们特定的要求。正如开头所说,我们也可以拦截其他的IRP,拦截其他的URB,或者拦截特定键盘的按键键值,将之传递到用户态,以方便实现联想、实达等随机配备的多功能键盘的功能。

       三、使用INF安装驱动

        在完成了驱动以后,还必须把它安装到系统里面,驱动程序才会起作用。一般来说,我们都必须为我们的驱动程序提供一个inf文件,以便于用户安装或者维护。对于新手来说,过滤驱动程序的inf或许有些棘手。所以,针对本文所描述的驱动,我们提供一个Win98下的安装范例usbkey.inf,范例中“;”后的文字是注解,以方便读者理解。

       ; usbkey.INF

       ; Installs Lower Level Filter for a HID keyboard device

       ; (c) Copyright 2001 SINO Co., Ltd.

       ;

       [Version]

       ;”CHICAGO”表示Win9x平台

       Signature="$CHICAGO$"

       ;键盘所属类名

       Class=HID

       ClassGUID={745a17a0-74d3-11d0-b6fe-00a0c90f57da}

       ;驱动程序提供者,此信息会显示在设备属性的“常规”页

       Provider=%USBDBE%

       LayoutFile=layout.inf

       ;显示在驱动程序文件详细资料窗口

       DriverVer=11/12/2001,4.10.2222.12

       ;[ControlFlags]

       ;ExcludeFromSelect = *

       ;驱动程序安装目录,inf会将我们的驱动程序安装到如下目录

       ;记得Destinationdir后面一定要带一个“s”

       [DestinationDirs]

       DefaultDestDir = 10,system32\drivers

       ;要增加的注册表项

       [ClassInstall]

       Addreg=HIDClassReg

       [HIDClassReg]

       HKR,,,,%HID.ClassName%

       HKR,,Icon,,-20

       ;制造商

       [Manufacturer]

       %USBDBE%=USBDBE

       [USBDBE]

       ;我们所要附加过滤驱动程序的设备ID。这个ID可以从IC的规范上得来,也可以

       ;用hidview.exe读出,或者从注册表HKLM\Enum\hid和usb项找出

       %HID.DeviceDesc% = Keypad_Inst, USB\VID_05AF&PID_0805&MI_00

       ;要安装的文件和需要修改的注册表项

       ;Install usbkey driver

       [Keypad_Inst]

       CopyFiles=Keypad_Inst.CopyFiles

       AddReg=Keypad_Inst.AddReg

       [Keypad_Inst.CopyFiles]

       hidusb.sys

       hidparse.sys

       hidclass.sys

       usbfilt.sys

       [Keypad_Inst.AddReg]

       HKR,,DevLoader,,*ntkern

       HKR,,NTMPDriver,,"hidusb.sys"

       [Keypad_Inst.HW]

       AddReg=Keypad_Inst.AddReg.HW

       ;Lowerfilters表示是低层过滤驱动,如果是上层过滤驱动,则必须改为upperfilters

       [Keypad_Inst.AddReg.HW]

       HKR,,"LowerFilters",0x00010000,"usbfilt.sys"

       ;HID设备所需要安装的文件和注册表中需要修改的地方

       ;Install USBHIDDevice

       [USBHIDDevice]

       CopyFiles=USBHIDDevice.Copy

       AddReg=USBHIDDevice.AddReg

       [USBHIDDevice.Copy]

       hidclass.sys

       hidusb.sys

       hidparse.sys

       [USBHIDDevice.AddReg]

       HKR,,DevLoader,,*ntkern

       HKR,,NTMPDriver,,"hidusb.sys"

       ;以下定义需要在上面某些地方使用时替换的字符串

       [strings]

       USBDBE = "SINO Co., Ltd."

       HID.DeviceDesc = "SINO USB MultiKeyboard"

       HID.HIDDeviceDesc = "Human Interface Devices"

       HID.DefaultDevice = "HID Default Device"

       HID.ClassName = "Human Input Devices (HID)"

       HID.SvcDesc = "Microsoft HID Class Driver"

       其实最简单的写inf的方式,是找一些类似设备的inf文件或范例来修改。在不侵权的前提下,充分利用现有资源是我们的一贯原则。

       第一步:将所有光盘文件拷贝到电脑硬盘中,此过程验证光盘文件是否全部可用,如果此过程无法正常通过,请参考第四步。

       第二步:按楼主的说法,一片黑,那这个光盘应该是有自运行的,可能是调用的文件不可用或其它的什么原因。如果第一步正常,请运行硬盘上的自动运行程序,一般文件名为setup.exe 或 autorun.exe 如果你的电脑设置隐藏已知文件扩展名,则不会显示文件名后面的“.exe”,正常运行后,按提示一步一步操作。

       第三步:若前两步无法正确执行,则要手动安装驱动程序,此过程可参考购置电脑时的说明书,如果没有此过程相关说明书,请参考第四步。

       第四步:请与当地电脑经销商或售后服务联系,要求更换驱动程序光盘。

       注:如果要手动安装驱动程序,可找到光盘文件下与硬件相对应的文件夹,运行里面的安装程序即可。如果是没有安装程序的,请在“我的电脑-->属性-->硬件(win2000及以上系统 ‘-->设备管理器’)”找到带问号的设备,然后在问号上点右键-->更新驱动程序,然后按提示一步步操作即可。

       好了,关于“驱动程序开发大全”的话题就到这里了。希望大家通过我的介绍对“驱动程序开发大全”有更全面、深入的认识,并且能够在今后的实践中更好地运用所学知识。