Организация ввода-вывода. Часть 2. Драйверы для WINDOWS NT. Рощин А.В. - 95 стр.

UptoLike

Составители: 

95
3.2 Дополнительные стандартные процедуры
В зависимости от типа и от уровня, занимаемого драйвером в стеке
обработки запроса на прерывание, драйвер может обладать следующими
дополнительными процедурами:
Reinitialize
VOID
(*PDRIVER_REINITIALIZE) (
IN PDRIVER_OBJECT DriverObject,
IN PVOID Context,
IN ULONG Count
);
Вдобавок к процедуре DriverEntry драйвер может иметь процедуру
Reinitialize, вызываемую один или несколько раз в процессе загрузки
системы после того, как DriverEntry вернет управление.
InterruptService (ISR)
BOOLEAN
(*PKSERVICE_ROUTINE) (
IN PKINTERRUPT Interrupt,
IN PVOID ServiceContext // usually points to device object
);
Любой драйвер физического устройства, который генерирует
прерывания, должен иметь эту процедуру. Этот драйвер всегда самый
низкий в стеке.
DpcForIsr или CustomDpc
VOID
(*PIO_DPC_ROUTINE) (
IN PKDPC Dpc,
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp,
IN PVOID Context
);
VOID
(*PKDEFERRED_ROUTINE) (
IN PKDPC Dpc,
IN PVOID DeferredContext,
IN PVOID SystemArgument1,
IN PVOID SystemArgument2
);
Любой драйвер, имеющий ISR должен иметь DpcForIsr или
CustomDpc.
      3.2 Дополнительные стандартные процедуры
      В зависимости от типа и от уровня, занимаемого драйвером в стеке
обработки запроса на прерывание, драйвер может обладать следующими
дополнительными процедурами:
Reinitialize
        VOID
        (*PDRIVER_REINITIALIZE) (
             IN PDRIVER_OBJECT DriverObject,
             IN PVOID Context,
             IN ULONG Count
             );

      Вдобавок к процедуре DriverEntry драйвер может иметь процедуру
Reinitialize, вызываемую один или несколько раз в процессе загрузки
системы после того, как DriverEntry вернет управление.
InterruptService (ISR)
        BOOLEAN
        (*PKSERVICE_ROUTINE) (
              IN PKINTERRUPT Interrupt,
              IN PVOID ServiceContext // usually points to device object
              );

      Любой драйвер физического устройства, который генерирует
прерывания, должен иметь эту процедуру. Этот драйвер всегда самый
низкий в стеке.
DpcForIsr или CustomDpc
     VOID
     (*PIO_DPC_ROUTINE) (
         IN PKDPC Dpc,
         IN PDEVICE_OBJECT DeviceObject,
         IN PIRP Irp,
         IN PVOID Context
         );

     VOID
     (*PKDEFERRED_ROUTINE) (
         IN PKDPC Dpc,
         IN PVOID DeferredContext,
         IN PVOID SystemArgument1,
         IN PVOID SystemArgument2
         );


      Любой драйвер, имеющий ISR должен иметь DpcForIsr или
CustomDpc.


                                        95