структура 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.

Remarks

Если драйвер выделяет диапазон адресов в адресном пространстве 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