虫虫首页| 资源下载| 资源专辑| 精品软件
登录| 注册

sp<b>read</b>sheets

  • 驱动程序与应用程序的接口

    有两种方式可以让设备和应用程序之间联系:1. 通过为设备创建的一个符号链;2. 通过输出到一个接口WDM驱动程序建议使用输出到一个接口而不推荐使用创建符号链的方法。这个接口保证PDO的安全,也保证安全地创建一个惟一的、独立于语言的访问设备的方法。一个应用程序使用Win32APIs来调用设备。在某个Win32 APIs和设备对象的分发函数之间存在一个映射关系。获得对设备对象访问的第一步就是打开一个设备对象的句柄。 用符号链打开一个设备的句柄为了打开一个设备,应用程序需要使用CreateFile。如果该设备有一个符号链出口,应用程序可以用下面这个例子的形式打开句柄:hDevice = CreateFile("\\\\.\\OMNIPORT3",  GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ,  NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL ,NULL);文件路径名的前缀“\\.\”告诉系统本调用希望打开一个设备。这个设备必须有一个符号链,以便应用程序能够打开它。有关细节查看有关Kdevice和CreateLink的内容。在上述调用中第一个参数中前缀后的部分就是这个符号链的名字。注意:CreatFile中的第一个参数不是Windows 98/2000中驱动程序(.sys文件)的路径。是到设备对象的符号链。如果使用DriverWizard产生驱动程序,它通常使用类KunitizedName来构成设备的符号链。这意味着符号链名有一个附加的数字,通常是0。例如:如果链接名称的主干是L“TestDevice”那么在CreateFile中的串就该是“\\\\.\\TestDevice0”。如果应用程序需要被覆盖的I/O,第六个参数(Flags)必须或上FILE_FLAG_OVERLAPPED。 使用一个输出接口打开句柄用这种方式打开一个句柄会稍微麻烦一些。DriverWorks库提供两个助手类来使获得对该接口的访问容易一些,这两个类是CDeviceInterface, 和 CdeviceInterfaceClass。CdeviceInterfaceClass类封装了一个设备信息集,该信息集包含了特殊类中的所有设备接口信息。应用程序能有用CdeviceInterfaceClass类的一个实例来获得一个或更多的CdeviceInterface类的实例。CdeviceInterface类是一个单一设备接口的抽象。它的成员函数DevicePath()返回一个路径名的指针,该指针可以在CreateFile中使用来打开设备。下面用一个小例子来显示这些类最基本的使用方法:extern GUID TestGuid;HANDLE OpenByInterface(  GUID* pClassGuid,  DWORD instance,  PDWORD pError){  CDeviceInterfaceClass DevClass(pClassGuid, pError);  if (*pError != ERROR_SUCCESS)    return INVALID_HANDLE_VALUE;  CDeviceInterface DevInterface(&DevClass, instance, pError);  if (*pError != ERROR_SUCCESS)    return INVALID_HANDLE_VALUE;  cout << "The device path is "    << DevInterface.DevicePath()    << endl;   HANDLE hDev;  hDev = CreateFile(   DevInterface.DevicePath(),    GENERIC_READ | GENERIC_WRITE,    FILE_SHARE_READ | FILE_SHARE_WRITE,    NULL,    OPEN_EXISTING,    FILE_ATTRIBUTE_NORMAL,    NULL  );  if (hDev == INVALID_HANDLE_VALUE)    *pError = GetLastError();  return hDev;} 在设备中执行I/O操作一旦应用程序获得一个有效的设备句柄,它就能使用Win32 APIs来产生到设备对象的IRPs。下面的表显示了这种对应关系。Win32 API  DRIVER_FUNCTION_xxxIRP_MJ_xxx  KDevice subclass member function CreateFile  CREATE  Create ReadFile  READ  Read WriteFile  WRITE  Write DeviceIoControl  DEVICE_CONTROL  DeviceControl CloseHandle  CLOSECLEANUP  CloseCleanUp 需要解释一下设备类成员的Close和CleanUp:CreateFile使内核为设备创建一个新的文件对象。这使得多个句柄可以映射同一个文件对象。当这个文件对象的最后一个用户级句柄被撤销后,I/O管理器调用CleanUp。当没有任何用户级和核心级的对文件对象的访问的时候,I/O管理器调用Close。如果被打开的设备不支持指定的功能,则调用相应的Win32将引起错误(无效功能)。以前为Windows95编写的VxD的应用程序代码中可能会在打开设备的时候使用FILE_FLAG_DELETE_ON_CLOSE属性。在Windows NT/2000中,建议不要使用这个属性,因为它将导致没有特权的用户企图打开这个设备,这是不可能成功的。I/O管理器将ReadFile和WriteFile的buff参数转换成IRP域的方法依赖于设备对象的属性。当设备设置DO_DIRECT_IO标志,I/O管理器将buff锁住在存储器中,并且创建了一个存储在IRP中的MDL域。一个设备可以通过调用Kirp::Mdl来存取MDL。当设备设置DO_BUFFERED_IO标志,设备对象分别通过KIrp::BufferedReadDest或 KIrp::BufferedWriteSource为读或写操作获得buff地址。当设备不设置DO_BUFFERED_IO标志也不设置DO_DIRECT_IO,内核设置IRP 的UserBuffer域来对应ReadFile或WriteFile中的buff参数。然而,存储区并没有被锁住而且地址只对调用进程有效。驱动程序可以使用KIrp::UserBuffer来存取IRP域。对于DeviceIoControl调用,buffer参数的转换依赖于特殊的I/O控制代码,它不在设备对象的特性中。宏CTL_CODE(在winioctl.h中定义)用来构造控制代码。这个宏的其中一个参数指明缓冲方法是METHOD_BUFFERED, METHOD_IN_DIRECT, METHOD_OUT_DIRECT, 或METHOD_NEITHER。下面的表显示了这些方法和与之对应的能获得输入缓冲与输出缓冲的KIrp中的成员函数:Method  Input Buffer Parameter  Output Buffer Parameter METHOD_BUFFERED  KIrp::IoctlBuffer KIrp::IoctlBuffer METHOD_IN_DIRECT  KIrp::IoctlBuffer KIrp::Mdl METHOD_OUT_DIRECT  KIrp::IoctlBuffer KIrp::Mdl METHOD_NEITHER  KIrp::IoctlType3InputBuffer KIrp::UserBuffer 如果控制代码指明METHOD_BUFFERED,系统分配一个单一的缓冲来作为输入与输出。驱动程序必须在向输出缓冲放数据之前拷贝输入数据。驱动程序通过调用KIrp::IoctlBuffer获得缓冲地址。在完成时,I/O管理器从系统缓冲拷贝数据到提供给Ring 3级调用者使用的缓冲中。驱动程序必须在结束前存储拷贝到IRP的Information成员中的数据个数。如果控制代码不指明METHOD_IN_DIRECT或METHOD_OUT_DIRECT,则DeviceIoControl的参数呈现不同的含义。参数InputBuffer被拷贝到一个系统缓冲,这个缓冲驱动程序可以通过调用KIrp::IoctlBuffer。参数OutputBuffer被映射到KMemory对象,驱动程序对这个对象的访问通过调用KIrp::Mdl来实现。对于METHOD_OUT_DIRECT,调用者必须有对缓冲的写访问权限。注意,对METHOD_NEITHER,内核只提供虚拟地址;它不会做映射来配置缓冲。虚拟地址只对调用进程有效。这里是一个用METHOD_BUFFERED的例子:首先,使用宏CTL_CODE来定义一个IOCTL代码:#define IOCTL_MYDEV_GET_FIRMWARE_REV \CTL_CODE (FILE_DEVICE_UNKNOWN,0,METHOD_BUFFERED,FILE_ANY_ACCESS)现在使用一个DeviceIoControl调用:BOOLEAN b;CHAR FirmwareRev[60];ULONG FirmwareRevSize;b = DeviceIoControl(hDevice, IOCTL_MYDEV_GET_VERSION_STRING,  NULL, // no input  注意,这里放的是包含有执行操作命令的字符串指针  0, FirmwareRev,      //这里是output串指针,存放从驱动程序中返回的字符串。sizeof(FirmwareRev),& FirmwareRevSize,  NULL // not overlapped I/O );如果输出缓冲足够大,设备拷贝串到里面并将拷贝的资结束设置到FirmwareRevSize中。在驱动程序中,代码看起来如下所示:const char* FIRMWARE_REV = "FW 16.33 v5";NTSTATUS MyDevice::DeviceControl( KIrp I ){  ULONG fwLength=0;  switch ( I.IoctlCode() )  {    case IOCTL_MYDEV_GET_FIRMWARE_REV:      fwLength = strlen(FIRMWARE_REV)+1;      if (I.IoctlOutputBufferSize() >= fwLength)      {        strcpy((PCHAR)I.IoctlBuffer(),FIRMWARE_REV);        I.Information() = fwLength;         return I.Complete(STATUS_SUCCESS);      }      else      {              }    case . . .   } }

    标签: 驱动程序 应用程序 接口

    上传时间: 2013-10-17

    上传用户:gai928943

  • 51单片机读写u盘(含源程序和原理图)

    附件有51单片机加上sl811读写U盘的源程序和原理图 /*--------------------------------------------------------------------------AT89X52.H Header file for the low voltage Flash Atmel AT89C52 and AT89LV52.Copyright (c) 1995-1996 Keil Software, Inc.  All rights reserved.--------------------------------------------------------------------------*/ #ifndef AT89X52_HEADER_FILE#define AT89X52_HEADER_FILE 1 /*------------------------------------------------Byte Registers------------------------------------------------*/sfr P0      = 0x80;sfr SP      = 0x81;sfr DPL     = 0x82;sfr DPH     = 0x83;sfr PCON    = 0x87;sfr TCON    = 0x88;sfr TMOD    = 0x89;sfr TL0     = 0x8A;sfr TL1     = 0x8B;sfr TH0     = 0x8C;sfr TH1     = 0x8D;sfr P1      = 0x90;sfr SCON    = 0x98;sfr SBUF    = 0x99;sfr P2      = 0xA0;sfr IE      = 0xA8;sfr P3      = 0xB0;sfr IP      = 0xB8;sfr T2CON   = 0xC8;sfr T2MOD   = 0xC9;sfr RCAP2L  = 0xCA;sfr RCAP2H  = 0xCB;sfr TL2     = 0xCC;sfr TH2     = 0xCD;sfr PSW     = 0xD0;sfr ACC     = 0xE0;sfr B       = 0xF0;

    标签: 51单片机 读写 源程序 原理图

    上传时间: 2014-01-05

    上传用户:lnnn30

  • 1、 了解系统调用pipe()的功能和实际原理 2、 编写一段程序

    1、 了解系统调用pipe()的功能和实际原理 2、 编写一段程序,使用管道实现父子进程之间的通信 a) 使用系统调用fork()创建一个子进程 b) 子进程调用函数write()向父进程发送自己的进程ID和字符串” s sending a message to parent.\n”。 c) 父进程调用函数read()通过管道读出子进程发来的消息,将消息输出屏幕,然后终止

    标签: pipe 系统调用 程序 编写

    上传时间: 2013-12-16

    上传用户:古谷仁美

  • 16 relay output channels and 16 isolated digital input channels LED indicators to show activated

    16 relay output channels and 16 isolated digital input channels LED indicators to show activated relays Jumper selectable Form A/Form B-type relay output channel Output status read-back Keep relay output values when hot system reset High-voltage isolation on input channels(2,500 VDC) Hi ESD protection(2,00VDC) High over-voltage protection(70VDC) Wide input range(10~50VDC) Interrupt handling capability High-density DB-62 connector Board ID

    标签: channels indicators activated isolated

    上传时间: 2016-02-15

    上传用户:dongbaobao

  • Atheros无线芯片AR-6000系列wince 6驱动源代码(这东西我也没用过别问我,我是搜别的wince资源搜到的) AR6K SDIO support. Requires firmware

    Atheros无线芯片AR-6000系列wince 6驱动源代码(这东西我也没用过别问我,我是搜别的wince资源搜到的) AR6K SDIO support. Requires firmware 1.1 on SD13 cards. readme: Atheros Communications AR6001 WLAN Driver for SDIO installation Read Me March 26,2007 (based on k14 fw1.1) Windows CE Embedded CE 6.0 driver installation. 1. Unzip the installation file onto your system (called installation directory below) 2. Create an OS design or open an existing OS design in Platform Builder 6.0. a. The OS must support the SD bus driver and have an SD Host Controller driver (add these from Catalog Items). b. Run image size should be set to allow greater than 32MB. 3. a. From the Project menu select Add Existing Subproject... b. select AR6K_DRV.pbxml c. select open This should create a subproject within your OS Design project for the AR6K_DRV driver. 4. Build the solution. 转自Tony嵌入式,原文地址:http://www.cevx.com/bbs/dispbbs.asp?boardID=4&ID=11762&page=1

    标签: wince Requires firmware Atheros

    上传时间: 2014-11-11

    上传用户:bibirnovis

  • 程序说明:浮点数变为压缩BCD码,保存在以数组中 第1字节的位7:0正,1负.位6:0(位5--0代表小数点前的位数),1(位5--0代表小数 点后0的位数) 2--4字节为压缩BCD码,有

    程序说明:浮点数变为压缩BCD码,保存在以数组中 第1字节的位7:0正,1负.位6:0(位5--0代表小数点前的位数),1(位5--0代表小数 点后0的位数) 2--4字节为压缩BCD码,有效位为7位,3个半字节,最后半个字节请使用者自行放 弃 程序占用资源PSW,A,B,DPTR,R0--R7,SP深度6,RAM 5个放数据 keil 兼容,调用KEIL 的FPMUL子程序。 程序作者:*************陈远征************** 目 的:追求更快的执行速度,与最小的程序代码 发布时间:2003--05--08 编写背景:精通汇编,研究C51半个月。身感C51方便中的不便 研究了几种汇编及KEIL的浮点算法,特做此程序. 声 明:转载时请保留以上的信息

    标签: BCD 字节 程序 浮点数

    上传时间: 2016-07-20

    上传用户:磊子226

  • This source code. simple tools for huawei CDMA platform function : read code write code read sp

    This source code. simple tools for huawei CDMA platform function : read code write code read spc write spc info etc.

    标签: code read function platform

    上传时间: 2017-07-08

    上传用户:jyycc

  • VIP专区-嵌入式/单片机编程源码精选合集系列(65)

    VIP专区-嵌入式/单片机编程源码精选合集系列(65)资源包含以下内容:1. DM9161应用电路原理图来自DAVICOM网站。需要的可以自由下载.2. ALTERA CPLD器件的配置与下载,贡献给初学习者,非长有用.3. This design package includes reference materials for creating a USB - PS/2 combination mouse that a.4. 字符表示的十六进制数转化为相应的整数    错误则返回    -1   .5. C51的12864m.6. 8个字LED点阵的显示程序.7. 51+ch375超级经典的U盘读写程序嘿嘿赶快下载把.8. PWM控制电机C程序-已通过实验测试 PWM控制精确控制电机的转动..9. C51串口单工通讯程序一成功通过测试,请放心下载.10. 来自网上好心人的好东东,关于SD卡读写的,内附protel原理图.11. 设计输入 ! 多种设计输入方法 – Quartus II • 原理图式图形设计输入 • 文本编辑 – AHDL, VHDL, Verilog • 内存编辑 .12. 全是FPGA的例子 对大家应该有好处 大家赶快下把 知识不等人.13. 此为编程代码示例.14. 此为编程代码示例.15. 我在spartan-3e starter kit 的板上实现了mc8051.16. 完成MP3播放功能.17. 一个关于实时时钟驱动方面的程序(ARM7).18. 遍历二叉树的4个非递归算法 vc编程基础.19. 快速排序的非递归算法 vc编程练习.20. 雷达高频接收机.21. 我的开发板的所有测试程序.22. ps2的驱动.23. 密度测试仪的源码.24. 本程序主要内容18b20+s52+uart单点测温详细c51程序.25. CPLD 9536 程序 我自己用的代码. VHDL语言.26. AMD嵌入式处理器AU1200开发板原理图.27. cpld3128开发板的原理图 很有用,已经做成PCB,需要的话可以联系我.28. ertfs文件系统里面既有完整ucos程序.29. 基于atmega128的交通信号灯控制程序.30. 利用软件编写的I2C传输界面程序,适用于现有4位机等汇编语言中!.31. I2C控制程序,供大家学习参考,使用时根据自己的系统修改..32. This designs uses a Nios II system to demonstrate how to read from the SD card. The software reads W.33. his design is the initial design when the board is powered-up. It increments a counter and displays.34. 用于多于9个串口的ce驱动程序。时间仓促。可以参考.35. CSD卡的dos驱动程序源码.36. ADT700的小程序.37. 嵌入式的小程序.38. 基于cpld的hdb3编码器 基于cpld的hdb3编码器.39. 基于cpld的交通灯设计 ?赾pld的交通灯设计.40. 用于ARM9系列的S3C2440A的bootloader,Linux平台.

    标签: 固件

    上传时间: 2013-04-15

    上传用户:eeworm

  • VIP专区-嵌入式/单片机编程源码精选合集系列(67)

    VIP专区-嵌入式/单片机编程源码精选合集系列(67)资源包含以下内容:1. 这是一个实用的I2C应用实例.2. Far Memory Support is only available in the PK51 package. If you have an CA51, DK51, or Evaluation.3. 这是一个i2c通信协议的说明书.4. MSC 1210 A/D Conversion for 1 input signals (-2.5V ... +2.5V) Inputs pairs AIN0-AIN1 read in an in.5. 该程序是一个描述四角铁甲虫机器人调试过程的程序.6. 基于plilips ARM 芯片LPC2200系列,使用ADC模块的通道0、1进行电压的测量.7. LPC2200系列ARM芯片的FLASH功能测试,调用IAP服务程序.8. JEN-ZBKIT-A快速使用,Zigbee开发板最佳选择..9. Jennic5131简介.开发ZIGBEE的最佳选择芯片..10. Jennic5121芯片简介.开发ZIGBEE的最佳选择..11. 开发zigbee的最佳选择开发板,由陈工科技提供.开发板介绍..12. zigbee开发的最佳选择平台.陈工科技提供的开发板,软件使用说明.主芯片是使用jennic的SOC zigbee芯片..13. zigbee技术简要介绍.主要应用于家居智能,工业控制..14. 关于ZIGBEE的一些疑问点的解答.对于ZIGBEE入门非常有用..15. zigbee的一个应用方案.基于Zigbee无线通讯的智能卡设备设计概述.值得参考..16. 用avr mega128读取spi串行字库.17. 用AVR Atmega128驱动多串口芯片Tl164C554A的程序.18. readSD2000 c.19. 这是我自己编写的一个运用了中断.20. 这是一个用c语言实现一个主机到多个从机进行通信的51源代码.21. 使用串口下载vxworks映象的方法,在文章中包括了详细的操作步骤和相应图示.22. 基于AT91SAM9260的U-boot的源代码.23. 基于AT91SAM9260的bootloader.24. PIC控制1702 原理图+源程序.25. AT91SAM9260在WinCE操作系统下的BSP移植代码(Bin文件).26. uCOSII 在LPC3180上的移植代码.27. ep9315开发板的原理图.原厂的作品,很好的参考.28. 自制C51编程器,附原理图+源程序,支持多种C51芯片烧写.29. 这是一个五分频电路设计.30. 10010序列检测.31. 以AT89C51为控制芯片设计时钟控制.32. cc2420 zigbee芯片的最新资料20070319.33. cc2430 zigbee芯片的最新资料20070319.34. 详细的无线键盘,鼠标,无线桥 开发文档.包含电路原理图,电路板光汇文件.FIREWALL, 驱动程序等.有此文档,就可以完全直接生产出来无线键盘,鼠标,无线桥.整个一套完整的解决方案..35. DSP课程设计,实现FFT算法,对初学者有参考价值.36. 没有错误的ARM9 -S3C2440 开发板原理图.37. 英文版zigbee协议.38. 学习cpld的朋友注意了.39. 数字竞赛抢答器的制作.40. ARM通讯程序,PC机测试 ARM通讯程序,PC机测试.

    标签:

    上传时间: 2013-06-29

    上传用户:eeworm

  • VIP专区-嵌入式/单片机编程源码精选合集系列(107)

    VIP专区-嵌入式/单片机编程源码精选合集系列(107)资源包含以下内容:1. 实现了i2c。介绍了代码的可执行性.2. 介绍了如何实现URAT。介绍了如何用VERILOG代码实现URAT。.3. 此程序为C51编程的OCM12864点阵汉字液晶显示.4. 24C64 EEPROM读写的C语言程序.5. 多功能旅游数字助理 (Multifunctional Tour Digital Assistant).6. 微电子方面的.7. 网络是嵌入式应用的常备功能.8. winrunner使用教程 winrunner是基于MS Windows的功能测试工具.9. 嵌入式FAT16文件系统,code C , Full version,function contains read file,write file,create file,etc.10. verilog语言编写.11. 嵌入式EVC正玄信号产生程序.12. 这是一个数字中的课程设计.13. 几个LPC2378的原理图.14. nxp lpc2368原理图.15. PS2Dev Environment for Win32。用于SONY的Psp游戏机的Sdk开发包.16. ATMEGA16 Processor software guild.17. DS18B20 for 8051 in C51.18. 嵌入式期刊.19. 本文介绍了AVR中TWI(I2C)的工作原理.20. 常用芯片及元件手册,快速查找各种芯片及元件参数.21. 基于Nios_的视频处理系统的设计与实现,研究生论文.22. 六数码管显示.23. 51 下载软件.24. 不错的交通灯控制程序。实现十字路口交通灯功能.25. 在进行嵌入式程序设计时.26. WindowsEmbedded从入门到精通系列课程.27. WindowsEmbedded从入门到精通系列课程.28. ucOS 在单片机上实现.29. 《单片机C语言编程与实例》的代码第4章.30.  介绍了一种处理被测信号为线性、连续、缓慢变化的较为简单的数字滤波方法。.31. 数字滤波器的基本结构 IIR数字滤波器的基本结构 FIR数字滤波器的基本结构 格型结构等等都是最基本的东西.32. 实现dsPIC33FJ256MC710与AVAGO的OPTICAL SENSOR之间的SPI通讯.33. uboot-1.1.1.gz。uboot1.1.1.bin的压缩包.34. SSD5 EX6 源代码.35. 包括ICD演示程序、ICDDEMO教学实验板原理图、使用说明书、MPLAB使用向导等多项与ICD使用相关的内容。.36. ep2c5的核心板原理图.37. μC/OS-II 学习指导 uC/OS-II 源码公开的嵌入式实时多任务操作系统内核.38. 一份关于s3c44b0的实验指导手册,里面包括了详细的代码和说明,好不容易得到的..39. 实验4 看门狗应用实验 S3C2410的 开发环境ADS1.2.40. PWM timer实验基于S3C2410的开发环境是ADS1.2.

    标签: 半导体激光器

    上传时间: 2013-04-15

    上传用户:eeworm