структура 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) |
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по