структура NOTIFICATION_INFO_W2K (1394.h)

Водитель автобуса передает NOTIFICATION_INFO для передачи информации в предоставленную водителем процедуру уведомлений для выделенного водителем диапазона адресов в адресном пространстве IEEE 1394 компьютера. Драйвер автобуса вызывает подпрограмму уведомлений, когда получает пакет запроса асинхронного ввода-вывода для этого адреса.

Синтаксис

typedef struct _NOTIFICATION_INFO_W2K {
  PMDL          Mdl;
  ULONG         ulOffset;
  ULONG         nLength;
  ULONG         fulNotificationOptions;
  PVOID         Context;
  PADDRESS_FIFO Fifo;
  PVOID         RequestPacket;
  PMDL          ResponseMdl;
  PVOID         *ResponsePacket;
  PULONG        ResponseLength;
  PKEVENT       *ResponseEvent;
} NOTIFICATION_INFO_W2K, *PNOTIFICATION_INFO_W2K;

Члены

Mdl

Если значение не равно NULL, Mdl задает список дескрипторов памяти (MDL) для выделенного диапазона адресов.

ulOffset

Задает смещение байтов с MDL, соответствующим адресу, который получил пакет запроса. Используется, только если Mdl не равно NULL.

nLength

Указывает количество байтов, затронутых пакетом запроса. Используется, только если Mdl не равно NULL.

fulNotificationOptions

Указывает, какой тип события активировал драйвер шины для вызова подпрограммы уведомлений. Возможные события, которые может вернуть водитель автобуса:

  • NOTIFY_FLAGS_AFTER_READ
  • NOTIFY_FLAGS_AFTER_WRITE
  • NOTIFY_FLAGS_AFTER_LOCK

Этот элемент используется только в том случае, если Mdl не равно NULL.

Context

Указатель на определенные контекстные данные для этого выделенного диапазона адресов. Драйвер предоставляет эти данные через элемент u.AllocateAddressRange.Context IRB для исходного запроса REQUEST_ALLOCATE_ADDRESS_RANGE.

Fifo

Указатель на структуру ADDRESS_FIFO , содержащую только что завершенный элемент FIFO. Используется, только если драйвер отправил список ADDRESS_FIFO в исходном запросе REQUEST_ALLOCATE_ADDRESS_RANGE.

RequestPacket

Если значение не равно NULL, RequestPacket указывает на исходный пакет запроса. Драйвер автобуса предоставляет это значение только в том случае, если драйвер устройства не указал MDL или список ADDRESS_FIFO в исходном запросе REQUEST_ALLOCATE_ADDRESS_RANGE.

ResponseMdl

Если значение не равно NULL, ResponseMdl указывает на неинициализированный MDL. Драйвер должен инициализировать этот MDL для непагебельного буфера и заполнить буфер пакетом ответа. Драйвер автобуса предоставляет это значение только в том случае, если драйвер устройства не указал MDL или список ADDRESS_FIFO в исходном запросе REQUEST_ALLOCATE_ADDRESS_RANGE.

ResponsePacket

Если значение не равно NULL, ResponsePacket указывает на расположение памяти, которое драйвер заполняет указателем на данные (квадлет или блок), возвращаемые в пакете ответа. Драйвер автобуса предоставляет это значение только в том случае, если драйвер устройства не указал MDL или список ADDRESS_FIFO в исходном запросе REQUEST_ALLOCATE_ADDRESS_RANGE.

ResponseLength

Если значение не равно NULL, ResponseLength указывает на расположение памяти, которое драйвер заполняет длиной пакета ответа. Драйвер автобуса предоставляет это значение только в том случае, если драйвер устройства не указал MDL или список ADDRESS_FIFO в исходном запросе REQUEST_ALLOCATE_ADDRESS_RANGE.

ResponseEvent

Если значение не равно NULL, ResponseEvent указывает на расположение памяти, которое драйвер заполняет событием ядра, которое драйвер шины должен использовать, чтобы сообщить о завершении отправки пакета ответа. Драйвер автобуса предоставляет это значение только в том случае, если драйвер устройства не указал MDL или список ADDRESS_FIFO в исходном запросе REQUEST_ALLOCATE_ADDRESS_RANGE.

Комментарии

Когда драйвер выделяет диапазон адресов в адресном пространстве компьютера IEEE 1394, ему может потребоваться, чтобы драйвер автобуса уведомил его о некоторых или всех пакетах запросов, отправленных на выделенные адреса. В рамках исходного запроса на выделение драйвер может потребовать, чтобы драйвер шины перенаправил каждый пакет для обработки, или может потребовать, чтобы драйвер шины обработал пакет и уведомил его о завершении. Дополнительные сведения см. в разделе REQUEST_ALLOCATE_ADDRESS_RANGE.

Если драйвер устройства не предоставляет резервного хранилища, драйвер шины перенаправит каждый пакет драйверу устройства для обработки. Драйвер автобуса передает значение NULL для Mdl и передает пакет в RequestPacket. Драйвер шины также передает указатели на расположения памяти, которые драйвер устройства должен заполнить буфером для пакета ответа (в ResponsePacket), длиной буфера (в ResponseLength) и MDL для буфера (в ResponseMdl). Драйвер шины также предоставляет расположение памяти, которое драйвер может использовать для передачи объекта события ядра в ResponseEvent. Если драйвер устройства предоставляет объект события, драйвер шины использует его, чтобы сообщить драйверу о завершении отправки пакета ответа.

Если драйвер предоставляет резервное хранилище в исходном запросе диапазона адресов выделения, водитель автобуса использует процедуру уведомления водителя, чтобы сообщить о том, что он завершил чтение или запись данных из резервного хранилища. Он передает MDL резервного хранилища в элементе Mdl , а также начальную папку и размер в связанном буфере в ulOffset и nLength. Водитель автобуса также передает тип события, которое привело к уведомлению в fulNotificationOptions.

Если драйвер устройства использует связанный список ADDRESS_FIFO в качестве резервного хранилища, драйвер автобуса возвращает элемент списка, который он выскочил в Fifo.

Требования

Требование Значение
Заголовок 1394.h (включая 1394.h)

См. также раздел

REQUEST_ALLOCATE_ADDRESS_RANGE