Windows CE 5.0:驱动程序---设备接口

转载 2007年09月14日 17:33:00

Windows CE 5.0:驱动程序---设备接口

设备接口

 

发布日期: 11/1/2004 | 更新日期: 11/1/2004

设备接口类是应用程序可用来访问设备驱动程序的功能的方法。它们向收到通知的任何一方表明特定接口存在。设备驱动程序可以具有多个设备接口类,也可以没有任何设备接口类。

IClass 注册表子项引用设备接口和它们的关联 GUID。声明接口的头 (.h) 文件通常会定义该 GUID 并且将该 GUID 与接口相关联。头文件通过定义该 GUID 将接口与该 GUID 相关联。必须通过 IClass 注册表值或者通过调用 AdvertiseInterface 来公开接口类。还可以定义自己的接口类。

对于设备接口没有任何限制。访问接口的含义取决于接口。

下面的代码示例使用一个示例 GUID 说明了头文件通常如何定义设备接口 GUID。

#define DEVCLASS_IFCNAME_STRING TEXT("{12345678-1234-1234-1122334455667788}")
#define DEVCLASS_IFCNAME_GUID { 0x12345678, 0x1234, 0x1234, { 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88 } }

设备管理器中的公开接口的驱动程序通过在传递到 ActivateDeviceEx 中的注册表项中适当地设置 IClass 值集来公布这一事实。通过 AdvertiseInterface,设备驱动程序公告它在注册表中公开哪些设备接口。该公告可由调用 RequestDeviceNotifications 的任何应用程序或驱动程序使用。应用程序或驱动程序可以通过调用 StopDeviceNotifications 停止接收设备通知。通过这些函数,可以访问设备接口的 GUID 和名称。GUID 描述了设备接口,而该名称能够唯一地标识该设备接口的多个实例。例如,一般性流接口具有一个 GUID,而名称“COM1:”和“DSK1:”引用了该一般性流接口的两个截然不同的实例。

两个不同的设备接口类 GUID 可能具有同名实例。名称仅在由设备接口类 GUID 命名的设备接口的访问方法的上下文中才有意义。

设备驱动程序只有在完整实现设备接口时才应该导出该设备接口。与驱动程序的任何交互都要求得到它公布的设备接口的全部支持。

通过调用 AdvertiseInterface,设备驱动程序可以显式发送通知。这主要适用于可移动媒体存储设备以及其他在加载时尚未准确确定它们将公开哪些接口的驱动程序。

设备驱动程序应当显式表明它们可以接受设备句柄访问请求。如果设备驱动程序公开基于设备句柄的接口,则驱动程序应当能够在该设备驱动程序的其他函数中接受等于零的 hOpenContext 值。hOpenContext 值为零表明是在设备级别请求访问,并且可能使用了不同的 OS 级别安全性。在它们的 XXX_Open (Device Manager) 函数中读取 AccessCode ShareMode 的设备驱动程序应该适当地处理设备句柄访问请求。GUID 用来表明对基于设备的访问和基于单个设备句柄的接口的支持。

有关查找由特定设备通过名称或文件句柄公开的接口的信息,请参阅 Device File Names

下表显示了在其中定义了接口的 %_WINCEROOT% 下的预定义接口和头文件。

接口 头文件

BATTERY_DRIVER_CLASS

Public/Common/OAK/Inc/Battery.h

BLOCK_DRIVER_GUID

Public/Common/SDK/Inc/Storemgr.h

CDDA_MOUNT_GUID

Public/Common/SDK/Inc/Storemgr.h

CDFS_MOUNT_GUID

Public/Common/SDK/Inc/Storemgr.h

DEVCLASS_CARDSERV_GUID

Public/Common/DDK/Inc/Cardserv.h

Public/Common/DDK/Inc/Cardsv2.h

DEVCLASS_DISPLAY_GUID

Public/Common/OAK/Inc/Winddi.h

DEVCLASS_KEYBOARD_GUID

Public/Common/SDK/Inc/Keybd.h

DEVCLASS_STREAM_GUID

Public/Common/SDK/Inc/Pnp.h

DMCLASS_PROTECTEDBUSNAMESPACE

Public/Common/DDK/Inc/Devload.h

FATFS_MOUNT_GUID

Public/Common/SDK/Inc/Storemgr.h

FSD_MOUNT_GUID

Public/Common/SDK/Inc/Storemgr.h

NLED_DRIVER_CLASS

Public/Common/SDK/Inc/NLED.h

PMCLASS_BLOCK_DEVICE

Public/Common/SDK/Inc/Pm.h

PMCLASS_DISPLAY

Public/Common/SDK/Inc/Pm.h

PMCLASS_GENERIC_DEVICE

Public/Common/SDK/Inc/Pm.h

PMCLASS_NDIS_MINIPORT

Public/Common/SDK/Inc/Pm.h

STORE_MOUNT_GUID

Public/Common/SDK/Inc/Storemgr.h

STOREMGR_DRIVER_GUID

Public/Common/SDK/Inc/Storemgr.h

UDFS_MOUNT_GUID

Public/Common/SDK/Inc/Storemgr.h

设备接口的其他预定义 GUID 包含在各种注册表文件中。要查找其他预定义 GUID,请在 %_WINCEROOT%/Public/Common/OAK/Files/Common.reg 文件或驱动程序特有的注册表文件中搜索 IClass 值。驱动程序特有的注册表文件包含在与设备驱动程序相同的目录中。有关驱动程序位于源代码中的哪些位置的信息,请参阅 Device Driver Source Code

另请参阅

Loading Device Drivers | Registry Enumerator | Device Interface Notifications

 

相关文章推荐

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Windows CE 5.0:驱动程序---设备管理器

Windows CE 5.0:驱动程序---设备管理器 发布日期: 11/1/2004 | 更新日期: 11/1/2004设备管理器是在 Windows CE 操作系统下运行的进程,它跟踪已加载的驱动...
  • danhu
  • danhu
  • 2007年09月14日 17:33
  • 2321

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Windows CE驱动程序分类

Windows CE嵌入式开发入门--基于Xscale架构 傅曦,陈黎等 人民邮电出版社   第九章  Windows CE BSP及驱动程序结构分析 9.1 Windows CE驱动程序结构...

给定A, B两个整数,不使用除法和取模运算,求A/B的商和余数

给定A, B两个整数,不使用除法和取模运算,求A/B的商和余数。 1.   最基本的算法是,从小到大遍历: for (i = 2 to A -1)          if (i * B > A)...

利用K-means聚类算法根据经纬度坐标对中国省市进行聚类

K-means聚类算法是一种非层次聚类算法,在最小误差的基础上将数据划分了特定的类,类间利用距离作为相似度指标,两个向量之间的距离越小,其相似度就越高。程序读取全国省市经纬度坐标,然后根据经纬度坐标进...

Radon变换理论介绍与matlab实现--经验交流

本人最近在研究Radon变换,在查阅了各种资料之后在此写下个人的理解,希望与各位牛牛进行交流共同进步,也使得理解更加深刻些。 Radon变换的本质是将原来的函数做了一个空间转换,即,将原来的XY平...

CT图像重建技术

由于csdn贴图不方便,并且不能上传附件,我把原文上传到了资源空间CT图像重建技术 1.引言 计算机层析成像(Computed Tomography,CT)是通过对物体进行不同角度的射线投影测量而...

Matlab绘图-很详细,很全面

Matlab绘图强大的绘图功能是Matlab的特点之一,Matlab提供了一系列的绘图函数,用户不需要过多的考虑绘图的细节,只需要给出一些基本参数就能得到所需图形,这类函数称为高层绘图函数。此外,Ma...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Windows CE 5.0:驱动程序---设备接口
举报原因:
原因补充:

(最多只允许输入30个字)