驱动程序的DO_DEVICE_INITIALIZING批注

使用_Kernel_clear_do_init_批注指定批注函数是否应清除设备对象的“标志”字段中的DO_DEVICE_INITIALIZING位。

此批注具有以下语法:

_Kernel_clear_do_init_(yes|no)

调用批注为 yes _Kernel_clear_do_init_ (的函数) 可免除调用函数清除DO_DEVICE_INITIALIZING位。

当函数返回成功时,批注几乎应始终在条件上下文中使用,除非注释应用于函数类型定义。 例如,在DRIVER_ADD_DEVICE函数类的以下函数类型定义中,批注指定函数不能引发 IRQL,并且函数应清除DO_DEVICE_INITIALIZING位。

typedef
_IRQL_always_function_max_(PASSIVE_LEVEL)
_IRQL_requires_same_
_Kernel_clear_do_init_(yes)
__drv_functionClass(DRIVER_ADD_DEVICE)
NTSTATUS
DRIVER_ADD_DEVICE (
    _In_ struct _DRIVER_OBJECT *DriverObject,
    _In_ struct _DEVICE_OBJECT *PhysicalDeviceObject
    );
typedef DRIVER_ADD_DEVICE *PDRIVER_ADD_DEVICE;

Windows 驱动程序的 SAL 2.0 注释