DO_DEVICE_INITIALIZING 不会阻止驱动程序接收即插即用请求或来自堆栈中高层驱动程序的请求,它仅仅防止组件打开设备。 对于驱动程序在其DriverEntry例程中创建的任何设备对象,由 I/O 管理器负责清除 DO_DEVICE_INITIALIZING。对于除DriverEntry之外的任何例程中创建的任何设备对象,由驱动程序负责清除 DO_DEVICE_INITIALIZING。
DO_DEVICE_INITIALIZING 这个东西的位置在DEVICE_OBJECT的Flags字段中, 本来这个Flags大多的情况下都是在设置IO方式,如DO_BUFFERED_IO, 但特殊的位也可能需要在这里设置。 用处是防止当自己的设备对象初始化完成之前,别的模块来发送信息给自己的模块的。 如果程序仅在DriverEntry中创建DeviceObject的话,那么当前位将由I...
DO_DEVICE_INITIALIZING 不会阻止驱动程序接收即插即用请求或来自堆栈中高层驱动程序的请求,它仅仅防止组件打开设备。 对于驱动程序在其DriverEntry例程中创建的任何设备对象,由 I/O 管理器负责清除 DO_DEVICE_INITIALIZING。对于除DriverEntry之外的任何例程中创建的任何设备对象,由驱动程序负责清除 DO_DEVICE_INITIALIZING。
_Kernel_clear_do_init_(yes|no) 调用批注为 yes _Kernel_clear_do_init_ (的函数) 可免除调用函数清除DO_DEVICE_INITIALIZING位。当函数返回成功时,批注几乎应始终在条件上下文中使用,除非注释应用于函数类型定义。 例如,在DRIVER_ADD_DEVICE函数类的以下函数类型定义中,批注指定函数不能引发 IRQL,并且函数...
创建筛选器设备对象时, IoCreateDevice 在设备对象上设置DO_DEVICE_INITIALIZING标志。 成功附加筛选器后,必须清除此标志。 如果未清除此标志,则无法再将筛选器驱动程序附加到筛选器链,因为对 IoAttachDeviceToDeviceStackSafe 的 调用将失败。无需清除 在DriverEntry 中创建的设备对象上的DO_DEVICE_INITIALIZING标志,因为...
When a device driver creates a device object by calling IoCreateDevice, the I/O manager sets DO_DEVICE_INITIALIZING in the Flags field of the DEVICE_OBJECT structure. The purpose of DO_DEVICE_INITIALIZING is to prevent other components from sending I/O to a device before the driver has finish...
使用_Kernel_clear_do_init_註釋來指定批註函式是否預期會清除裝置物件的 Flags 欄位中的DO_DEVICE_INITIALIZING位。 此註解具有下列語法: C++ _Kernel_clear_do_init_(yes|no) 呼叫以 _Kernel_clear_do_init_ (批注的函式,) 豁免呼叫函式必須清除DO_DEVICE_INITIALIZING位。
It isn't necessary to clear the DO_DEVICE_INITIALIZING flag on device objects that are created in DriverEntry, because the I/O Manager automatically clears it. However, your driver should clear this flag on all other device objects that it creates....
It isn't necessary to clear the DO_DEVICE_INITIALIZING flag on device objects that are created in DriverEntry, because the I/O Manager automatically clears it. However, your driver should clear this flag on all other device objects that it creates....
建立篩選裝置物件時, IoCreateDevice 會在裝置物件上設定DO_DEVICE_INITIALIZING旗標。 成功附加篩選之後,必須清除此旗標。 如果未清除此旗標,則無法再將篩選驅動程式附加至篩選鏈結,因為 對IoAttachDeviceToDeviceStackSafe 的呼叫將會失敗。不需要清除 DriverEntry中建立之裝置物件上的DO_DEVICE_INITIALIZING旗標,因為...