Драйвер мини-класса батареи: DriverEntry подпрограмма
Подпрограмма DriverEntry инициализирует драйвер мини-класса.
Точки входа для конкретного драйвера
Подпрограмма DriverEntry драйвера мини-класса настраивает следующие точки входа для конкретного драйвера:
- Подпрограмма unload в DriverObject-DriverUnload>
- Подпрограмма AddDevice драйвера в DriverObject-DriverExtension-AddDevice >>
- Функция обратного вызова DRIVER_DISPATCH в DriverObject-MajorFunction>[IRP_MJ_POWER]
- Функция обратного вызова DRIVER_DISPATCH в DriverObject-MajorFunction>[IRP_MJ_PNP]
- Функция обратного вызова DRIVER_DISPATCH в DriverObject-MajorFunction>[IRP_MJ_CREATE]
- Функция обратного вызова DRIVER_DISPATCH в DriverObject-MajorFunction>[IRP_MJ_CLOSE]
- Функция обратного вызова DRIVER_DISPATCH в DriverObject-MajorFunction>[IRP_MJ_DEVICE_CONTROL]
- Функция обратного вызова DRIVER_DISPATCH в DriverObject-MajorFunction>[IRP_MJ_SYSTEM_CONTROL].
Ниже приведен пример кода, который инициализирует эти точки входа для гипотетического драйвера мини-класса NewBatt:
DriverObject->DriverUnload = NewBattUnload;
DriverObject->DriverExtension->AddDevice = NewBattAddDevice;
DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = NewBattDispatchDeviceControl;
DriverObject->MajorFunction[IRP_MJ_CREATE] = NewBattDispatchCreate;
DriverObject->MajorFunction[IRP_MJ_CLOSE] = NewBattDispatchClose;
DriverObject->MajorFunction[IRP_MJ_PNP] = NewBattDispatchPnp;
DriverObject->MajorFunction[IRP_MJ_POWER] = NewBattDispatchPower;
DriverObject->MajorFunction[IRP_MJ_SYSTEM_CONTROL] = NewBattSystemControl;
Так как сведения о состоянии батареи неизвестны до тех пор, пока диспетчер PnP не вызовет подпрограмму AddDevice драйвера мини-класса, подпрограмма DriverEntry не инициализирует такое состояние. Инициализация для конкретного устройства выполняется в процедуре AddDevice .
Дополнительные требования, относящиеся к подпрограмме
Дополнительные сведения о стандартных требованиях см. в следующих разделах: