estrutura NOTIFICATION_INFO_W2K (1394.h)

O motorista do ônibus passa NOTIFICATION_INFO para passar informações para a rotina de notificação fornecida pelo motorista para um intervalo de endereços alocado pelo motorista no espaço de endereço do IEEE 1394 do computador. O motorista do ônibus chama a rotina de notificação quando recebe um pacote de solicitação de E/S assíncrona para esse endereço.

Sintaxe

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;

Membros

Mdl

Se não for NULL, mdl especificará a MDL (lista de descritores de memória) para o intervalo de endereços alocado.

ulOffset

Especifica o deslocamento de bytes com o MDL que corresponde ao endereço que recebeu um pacote de solicitação. Usado somente quando Mdl não é NULL.

nLength

Especifica o número de bytes afetados pelo pacote de solicitação. Usado somente quando Mdl não é NULL.

fulNotificationOptions

Especifica qual tipo de evento disparou o driver de barramento para chamar a rotina de notificação. Os possíveis eventos que o motorista do ônibus pode retornar são os seguintes:

  • NOTIFY_FLAGS_AFTER_READ
  • NOTIFY_FLAGS_AFTER_WRITE
  • NOTIFY_FLAGS_AFTER_LOCK

Esse membro só é usado quando Mdl não é NULL.

Context

Ponteiro para dados de contexto específicos para esse intervalo de endereços alocado. O driver fornece esses dados por meio do membro u.AllocateAddressRange.Context do IRB para a solicitação de REQUEST_ALLOCATE_ADDRESS_RANGE original.

Fifo

Ponteiro para a estrutura ADDRESS_FIFO que contém o elemento FIFO concluído. Usado somente se o driver enviou uma lista de ADDRESS_FIFO na solicitação de REQUEST_ALLOCATE_ADDRESS_RANGE original.

RequestPacket

Se não for NULL, RequestPacket apontará para o pacote de solicitação original. O motorista do ônibus só fornecerá isso se o driver do dispositivo não forneceu um MDL ou uma lista de ADDRESS_FIFO na solicitação de REQUEST_ALLOCATE_ADDRESS_RANGE original.

ResponseMdl

Se não for NULL, ResponseMdl apontará para um MDL não inicializado. O driver deve inicializar esse MDL para um buffer não página e preencher o buffer com o pacote de resposta. O motorista do ônibus só fornecerá isso se o driver do dispositivo não forneceu um MDL ou uma lista de ADDRESS_FIFO na solicitação de REQUEST_ALLOCATE_ADDRESS_RANGE original.

ResponsePacket

Se não for NULL, ResponsePacket apontará para um local de memória que o driver preencherá com um ponteiro para os dados (quadlet ou bloco) a serem retornados no pacote de resposta. O motorista do ônibus só fornecerá isso se o driver do dispositivo não forneceu um MDL ou uma lista de ADDRESS_FIFO na solicitação de REQUEST_ALLOCATE_ADDRESS_RANGE original.

ResponseLength

Se não for NULL, ResponseLength apontará para um local de memória que o driver preencherá com o comprimento de seu pacote de resposta. O motorista do ônibus só fornecerá isso se o driver do dispositivo não forneceu um MDL ou uma lista de ADDRESS_FIFO na solicitação de REQUEST_ALLOCATE_ADDRESS_RANGE original.

ResponseEvent

Se não for NULL, ResponseEvent apontará para um local de memória que o driver preencherá com o evento de kernel que o driver de barramento deve usar para sinalizar que concluiu o envio do pacote de resposta. O motorista do ônibus só fornecerá isso se o driver do dispositivo não forneceu um MDL ou uma lista de ADDRESS_FIFO na solicitação de REQUEST_ALLOCATE_ADDRESS_RANGE original.

Comentários

Quando um driver aloca um intervalo de endereços no espaço de endereço do IEEE 1394 do computador, pode exigir que o motorista do ônibus o notifique para alguns ou todos os pacotes de solicitação enviados para os endereços alocados. Como parte da solicitação de alocação original, o motorista pode exigir que o motorista do ônibus encaminhe cada pacote para manipulação ou pode exigir que o motorista do ônibus manipule o pacote e notifique o driver do dispositivo quando ele terminar. Para obter mais informações, consulte REQUEST_ALLOCATE_ADDRESS_RANGE.

Se o driver do dispositivo não fornecer repositório de backup, o motorista do barramento encaminhará cada pacote para o driver de dispositivo para tratamento. O motorista do ônibus passa NULL para Mdl e passa o pacote em RequestPacket. O driver de barramento também passa ponteiros para locais de memória que o driver de dispositivo deve preencher com o buffer para o pacote de resposta (em ResponsePacket), o comprimento do buffer (em ResponseLength) e um MDL para o buffer (em ResponseMdl). O driver de barramento também fornece um local de memória que o driver pode usar para passar um objeto de evento kernel em ResponseEvent. Se o driver do dispositivo fornecer um objeto de evento, o motorista do barramento o usará para sinalizar o driver quando terminar de enviar o pacote de resposta.

Se o driver fornecer o repositório de backup na solicitação de intervalo de endereços de alocação original, o motorista do barramento usará a rotina de notificação do motorista para sinalizar que concluiu a leitura ou gravação de dados do repositório de backup. Ele passa o MDL do repositório de backup no membro Mdl e o local inicial e o tamanho dentro do buffer associado em ulOffset e nLength. O motorista do ônibus também passa o tipo de evento que levou à notificação em fulNotificationOptions.

Se o driver do dispositivo estiver usando uma lista vinculada de ADDRESS_FIFO como o repositório de backup, o motorista do barramento retornará o elemento de lista que ele disparou no Fifo.

Requisitos

Requisito Valor
Cabeçalho 1394.h (inclua 1394.h)

Confira também

REQUEST_ALLOCATE_ADDRESS_RANGE