有两种方式可以让设备和应用程序之间联系: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
The STWD100 watchdog timer circuits are self-contained devices which prevent systemfailures that are caused by certain types of hardware errors (non-responding peripherals,bus contention, etc.) or software errors (bad code jump, code stuck in loop, etc.).The STWD100 watchdog timer has an INPUT, WDI, and an output, WDO (see Figure 2). TheINPUT is used to clear the internal watchdog timer periodically within the specified timeoutperiod, twd (see Section 3: Watchdog timing). While the system is operating correctly, itperiodically toggles the watchdog INPUT, WDI. If the system fails, the watchdog timer is notreset, a system alert is generated and the watchdog output, WDO, is asserted (seeSection 3: Watchdog timing).The STWD100 circuit also has an enable pin, EN (see Figure 2), which can enable ordisable the watchdog functionality. The EN pin is connected to the internal pull-downresistor. The device is enabled if the EN pin is left floating.
上传时间: 2013-10-22
上传用户:taiyang250072
为了在CDMA系统中更好地应用QDPSK数字调制方式,在分析四相相对移相(QDPSK)信号调制解调原理的基础上,设计了一种QDPSK调制解调电路,它包括串并转换、差分编码、四相载波产生和选相、相干解调、差分译码和并串转换电路。在MAX+PLUSⅡ软件平台上,进行了编译和波形仿真。综合后下载到复杂可编程逻辑器件EPM7128SLC84-15中,测试结果表明,调制电路能正确选相,解调电路输出数据与QDPSK调制输入数据完全一致,达到了预期的设计要求。 Abstract: In order to realize the better application of digital modulation mode QDPSK in the CDMA system, a sort of QDPSK modulation-demodulation circuit was designed based on the analysis of QDPSK signal modulation-demodulation principles. It included serial/parallel conversion circuit, differential encoding circuit, four-phase carrier wave produced and phase chosen circuit, coherent demodulation circuit, difference decoding circuit and parallel/serial conversion circuit. And it was compiled and simulated on the MAX+PLUSⅡ software platform,and downloaded into the CPLD of EPM7128SLC84-15.The test result shows that the modulation circuit can exactly choose the phase,and the output data of the demodulator circuit is the same as the INPUT data of the QDPSK modulate. The circuit achieves the prospective requirement of the design.
上传时间: 2014-01-13
上传用户:qoovoop
a8259 可编程中断控制 altera提供 The a8259 is designed to simplify the implementation of the interrupt interface in 8088 and 8086 based microcomputer systems. The device is known as a programmable interrupt controller. The a8259 receives and prioritizes up to 8 interrupts, and in the cascade mode, this can be expanded up to 64 interrupts. An asynchronous reset and a clock INPUT have been added to improve operation and reliability.
上传时间: 2014-11-29
上传用户:zhyiroy
The Tri-Mode Ethernet MAC (TEMAC) UltraController-II module is a minimal footprint,embedded network processing engine based on the PowerPC™ 405 (PPC405) processor coreand the TEMAC core embedded within a Virtex™-4 FX Platform FPGA. The TEMACUltraController-II module connects to an external PHY through Gigabit Media IndependentInterface (GMII) and Management Data INPUT/Output (MDIO) interfaces and supports tri-mode(10/100/1000 Mb/s) Ethernet. Software running from the processor cache reads and writesthrough an On-Chip Memory (OCM) interface to two FIFOs that act as buffers between thedifferent clock domains of the PPC405 OCM and the TEMAC.
上传时间: 2013-10-26
上传用户:yuzsu
W-RXM2013基于高性能ASK无线超外差射频接收芯片 设计,是一款完整的、体积小巧的、低功耗的无线接 收模块。 模块采用超高性价比ISM频段接收芯片设计 主要设定为315MHz-433MHz频段,标准传输速率下接 收灵敏度可达到-115dbm。并且具有行业内同类方案W-RXM2013 Micrel、SYNOXO、PTC等知名品牌的芯片所不具备的超强抗干扰能力。外围省去10.7M的中频 器件模块将芯片的使能脚引出,可作休眠唤醒控制,也可通过电阻跳线设置使能置高控制。 本公司推出该款模块力求解决客户开发产品过程中无线射频部分的成本压力,为客户提供 性能卓越价格优势突出的电子组件。模块接口采用金手指方式,方便生产及应用。天线输入部 分可以将接收天线焊接在模块上面,也可以通过接口转接至客户主机板上,应用非常灵活。 优势应用:机电控制板、电源控制板、高低温环境数据监测等复杂条件下 的控制指令的无线传输。 1.1 基本特性 λ ●省电模式下,低电流损耗 ●方便投入应用 ●高效的串行编程接口 ●工作温度范围:﹣40℃~+85℃ ●工作电压:2.4~ 5.5 Volts. ●有效频率:250-348Mhz, 400-464Mhz ●灵敏度高(-115dbm)、功耗低在3.5mA@315MHz应用下 ●待机电流小于1uA,系统唤醒时间5ms(RF INPUT Power=-60dbm)
上传时间: 2013-10-08
上传用户:dapangxie
特点 最高輸入頻率 10KHz 显示范围0-9999(一段设定)0至999999累积量 计数速度 50/10000脈波/秒可选择 输入脈波具有预设刻度功能 累积量同步(批量)或非同步(批次)计数可选择 数位化指拨设定操作简易 计数暂时停止功能 1组报警功能 2:主要規格 脈波輸入型式: Jump-pin selectable current sourcing(NPN) or current sinking (PNP) 脉波触发电位: HI bias (CMOS) (VIH=7.5V, VIL=5.5V) LO bias (TTL) (VIH=3.7V, VIL=2.0V) 最高输入频率: <10KHz (up,down,up/down mode) 输出动作时间 : 0.1 to 99.9 second adjustable 输出复归方式: Manual(N) or automatic (R or C) can be modif 继电器容量: AC 250V-5A, DC 30V-7A 显示值范围: 0-9999(PV,SV) 0-999999(TV) 显示幕: Red high efficiency LEDs high 7.0mm (.276")(PV,SV) Red high efficiency LEDs high 9.2mm (.36")(TV) 参数设定方式: Touch switches 感应器电源: 12VDC +/-3%(<60mA) 记忆方式: Non-volatile E2PROM memory 绝缘耐压能力: 2KVac/1 min. (INPUT/output/power) 1600Vdc (INPUT/output) 使用环境条件: 0-50℃(20 to 90% RH non-condensed) 存放环境条件: 0-70℃(20 to 90% RH non-condensed) CE认证: EN 55022:1998/A1:2000 Class A EN 61000-3-2:2000 EN 61000-3-3:1995/A1:2001 EN 55024:1998/A1:2001
上传时间: 2013-10-24
上传用户:wvbxj
特点 显示值范围-199999至999999位數 最高輸入頻率 5KHz 90度相位差加減算具有提高解析度4倍功能 输入脈波具有预设刻度功能 定位基准值可任意設定 比較磁滯值可任意設定 数位化指拨设定操作简易 3组继电器输出功能 2:主要規格 脈波輸入型式: Jump-pin selectable current sourcing(NPN) or current sinking (PNP) 脉波触发电位: HI bias (CMOS) (VIH=7.5V, VIL=5.5V) LO bias (TTL) (VIH=3.7V, VIL=2.0V) 最高输入频率: <5KHz 定位置范围: -199999 to 999999 second adjustabl 比较磁滞范围: 0 to 9999 adjustable 继电器容量: AC 250V-5A, DC 30V-7A 显示值范围: -199999 to 999999 显示幕: Red high efficiency LEDs high 9.2mm (.36") 参数设定方式: Touch switches 感应器电源: 12VDC +/-3%(<60mA) 记忆方式: Non-volatile E2PROM memory 绝缘耐压能力: 2KVac/1 min. (INPUT/output/power) 1600Vdc (INPUT/output) 使用环境条件: 0-50℃(20 to 90% RH non-condensed) 存放环境条件: 0-70℃(20 to 90% RH non-condensed) CE认证: EN 55022:1998/A1:2000 Class A EN 61000-3-2:2000 EN 61000-3-3:1995/A1:2001 EN 55024:1998/A1:2001
上传时间: 2014-12-03
上传用户:xjz632
特点 精确度0.25%滿刻度 ±1位數 输入配线系统可任意选择 CT比可任意设定 具有异常电流值与异常次数记录保留功能 电流过高或过低检测可任意设定 报警继电器复归方式可任意設定 尺寸小,穩定性高 2.主要規格 辅助电源: AC110V&220V ±20%(50 or 60Hz) AC220V&440V ±20%(50 or 60Hz)(optional) 精确度: 0.25% F.S. ±1 digit 输入负载: <0.2VA (Current) 最大过载能力 : Current related INPUT: 2 x rated continuous 10 x rated 30 sec. 25 x rated 3sec. 50 x rated 1 sec. 输入电流范围: AC0-5A (10-1000Hz) CT ratio : 1-2000 adjustable 启动延迟动作时间: 0-99.9 second adjustable 继电器延迟动作时间: 0-99.9 second adjustable 继电器复归方式: Manual (N) / latch(L) can be modified 继电器磁滞范围: 0-999 digit adjustable 继电器动作方向: HI /LO/GO/HL can be modified 继电器容量: AC 250V-5A, DC 30V-7A 过载显示: "doFL" 温度系数: 50ppm/℃ (0-50℃) 显示幕: Red high efficiency LEDs high 14.22mm(.56")(PV) Red high efficiency LEDs high 14.22mm(.276")(NO) 参数设定方式: Touch switches 记忆型式 : Non-volatile E2PROM memory 绝缘耐压能力: 2KVac/1 min. (INPUT/output/power) 1600Vdc(INPUT/output 使用环境条件 : 0-50℃(20 to 90% RH non-condensed) 存放环境条件: 0-70℃(20 to 90% RH non-condensed) CE认证: EN 55022:1998/A1:2000 Class A EN 61000-3-2:2000 EN 61000-3-3:1995/A1:2001 EN 55024:1998/A1:2001
上传时间: 2013-10-14
上传用户:wanghui2438
特点 精确度0.1%滿刻度 ±1位數 可量測 交直流電流/交直流电压/電位計/傳送器/Pt-100/荷重元/電阻 等信号 显示范围-1999-9999可任意规划 具有异常值与异常次数记录保留功能 异常信号过高或过低或范围內或范围外检测可任意設定 报警继电器复归方式可任意設定 尺寸小,穩定性高 2.主要規格 精确度: 0.1% F.S. ±1 digit 0.2% F.S. ±1 digit(AC) 取样时间: 16 cycles/sec. 显示值范围: -1999 - +9999 digit adjustable 启动延迟动作时间: 0-99.9 second adjustable 继电器延迟动作时间: 0-99.9 second adjustable 继电器复归方式: Manual (N) / latch(L) can be modified 继电器动作方向: HI /LO/GO/HL can be modified 继电器容量: AC 250V-5A, DC 30V-7A 过载显示: "doFL" 温度系数: 50ppm/℃ (0-50℃) 显示幕: Red high efficiency LEDs high 14.22mm(.56")(PV) Red high efficiency LEDs high 7.0mm(.276")(NO) 参数设定方式: Touch switches 记忆型式 : Non-volatile E2PROM memory 绝缘耐压能力: 2KVac/1 min. (INPUT/output/power) 1600Vdc(INPUT/output 使用环境条件 : 0-50℃(20 to 90% RH non-condensed) 存放环境条件: 0-70℃(20 to 90% RH non-condensed) CE认证: EN 55022:1998/A1:2000 Class A EN 61000-3-2:2000 EN 61000-3-3:1995/A1:2001 EN 55024:1998/A1:2001
上传时间: 2013-11-02
上传用户:fandeshun