即插即用设备驱动VxDs与应用到VxD通信详解
即插即用设备驱动VxDs
即插即用(Plug and Play)的配置管理/枚举/仲裁机制较为复杂,但系统与VxD的即插即用接口相对直观。在系统边界,支持即插即用只需处理几个定义明确的消息并构建合适的INF文件。
核心函数分析
- ProcessConfigStop函数:该函数用于撤销
ProcessConfigStart的操作。以下为代码实现:
CONFIGRET ProcessConfigStop( DEVNODE devnode, void *p ) { DEVICE_CONTEXT *dev = (DEVICE_CONTEXT *)p; WORD reg; if (dev->pMem) { dev->pMem->Ctrl = CTRL_STOP_DEVICE; UnMapPhysToLinear( (DWORD)dev->pMem, dev->MemSize ); } else if (dev->IoBase) { reg = dev->IoBase + REG_CTRL; _outpdw( reg, CTRL_STOP_DEVICE ); } VPICD_Force_Default_Behavior( dev->hndIrq ); _HeapFree(