即插即用简单介绍

如果您编写的VxD需要运行于Win95下,您必须提供设备信息文件(.INF),这个文件可以告诉Win95如何安装VxD,如何配置设备。如果您需要INF文件的详细内容可以在Win95 DDK中找到。如果您在Win95下的 VxD是为PCI,PCMCIA或PNPISA设备编写的,您应该让它支持即插即用,也就是PNP,PNP的作用就是您编写的VxD应该可以使用配置管理器(也是一个VxD)服务找到供这个设备使用的系统资源,请注意,是从一个服务中获得信息,而不是从一个INI文件,也是硬件编码中。

如果需要PNP功能,您的VxD必须可以处理由配置管理器发送来的PNP_New_DevNode消息,程序还应该可以通过调用CM_RegisterDeviceDriver注册自己为此设备的驱动程序。在调用这个函数时,您传送给CM一个回叫函数,CM会在资源被指定后通知您,并返回函数码。当您的回叫函数通过CONFIG_START调用时,调用函数CM_GetAllocLogConf找出提供给设备使用的系统资源。这个调用会自动填充CM_CONFIG结构,这个结构中有相应的数据域说明设备使用的I/O地址,IRQ等等信息。

对于某些类型的VxD,包括SCSI MiniPort驱动程序,网络驱动程序和VCOMN端口驱动程序,可以使用另一种方法来获得配置信息。这几个类型是不同的,因为每种情况下会有不同的VxD充当驱动程序装载程序,而实际上,也正在驱动程序装载程序和CM打交道,而不是驱动程序VxD。这些驱动程序可能需要使用由驱动程序装载程序提供的配置服务,而不是和CM直接打交道。

在没有得到正确的注册表入口前之前,配置管理器是不会向用户程序发送PNP_New_DevNode消息的。而取得注册表入口的最好办法不是手工进行,而是使用INF文件。Win95将在看到设备时向用户提示它需要INF文件,对于PCI,PCMCIA和ISAPNP设备,当用户物理上连接这个设备时这一切会自动发生;对于其它设备,用户必须运行设备管理器中的“添加新硬件”来达到同样的效果。Win95会使用提供好的INF文件设置注册表入口。