Função StorPortNotification (storport.h)
O driver de miniporto usa a rotina StorPortNotification para notificar o driver storport de determinados eventos e condições.
StorPortNotification usa um número variável de parâmetros dependendo do tipo de notificação especificado.
Sintaxe
STORPORT_API VOID StorPortNotification(
SCSI_NOTIFICATION_TYPE NotificationType,
PVOID HwDeviceExtension,
...
);
Parâmetros
NotificationType
Especifica o tipo de notificação, que pode ser um dos valores a seguir.
Tipo de notificação | Descrição |
---|---|
BufferOverrunDetected | Esse tipo de notificação não tem argumentos e dá ao driver de miniporto a oportunidade de verificar o sistema se ele detectar uma corrupção. |
BusChangeDetected |
Indica que um dispositivo de destino pode ter sido adicionado ou removido de um barramento dinâmico. Para usar esse tipo de notificação, inclua um parâmetro PathId opcional para indicar a porta SCSI ou o barramento em que a alteração foi detectada.
|
IoTargetRequestServiceTime |
Indica ao Storport o tempo necessário para processar uma solicitação especificada.
Duração [in] A duração do tempo de serviço necessário para srb em 100 unidades nanossegundos. Srb [in] O bloco de solicitação para o qual definir a hora do serviço. |
LinkDown | Indica que o link está inativo e provavelmente ficará inativo por algum tempo. O StorPort pausará o adaptador em resposta a essa notificação. |
Linkup | Indica que o link foi restaurado. O StorPort reinicia o adaptador para que ele possa retomar a operação em resposta a essa notificação. Os drivers de miniporte não devem enviar essa notificação, a menos que o link esteja inativo. |
QueryTickCount |
Esse tipo de notificação retorna um LARGE_INTEGER que contém o valor de KeQueryTickCount. O valor retornado em TickCount é a contagem das interrupções do temporizador de intervalo que ocorreram desde que o sistema foi inicializado
|
RequestComplete |
Indica que o SRB especificado foi concluído. Depois que essa notificação é enviada, o driver de porta é proprietário da solicitação. O parâmetro Srb representa um ponteiro para o bloco de solicitação SCSI concluído. O driver de miniporte não deve tentar acessar a solicitação no Srb e não deve passar srb para outra rotina.
|
RequestTimerCall |
Indica que o driver de miniporto requer que o driver de porta chame a rotina HwStorTimer do driver de miniport no número solicitado de microssegundos.
HwStorTimer [in] Um ponteiro para uma rotina de temporizador que é chamada após o intervalo de tempo especificado em MiniportTimerValue. MiniportTimerValue [in] Indica o intervalo após o qual a rotina do temporizador apontada por HwStorTimer é chamada. Esse é um valor positivo especificado em microssegundos. Um valor igual a 0 cancelará o temporizador. A resolução do temporizador do sistema é de aproximadamente 10 milissegundos. |
ResetDetected | Indica que o HBA detectou uma redefinição no barramento. Depois que essa notificação é enviada, o driver de miniporto ainda é responsável por concluir quaisquer solicitações ativas. O driver da porta gerenciará todos os atrasos necessários de redefinição de barramento. |
Wmievent |
Indica que o driver de miniporto detectou um evento para o qual um ou mais consumidores de dados WMI estão registrados. Observe que o parâmetro WmiEvent é limitado a um máximo de 128 bytes. Se wmiEvent for maior que 128 bytes, ele será ignorado.
WMIEvent [in] Um ponteiro para estruturas de eventos que têm informações sobre um evento WMI detectado pelo driver de miniporto. PathId [in] Indica a porta ou o barramento SCSI para a solicitação. Defina esse parâmetro como 0xff para um dispositivo adaptador. Caso contrário, defina como uma ID de caminho válida. TargetId [in, opcional] Indica o controlador de destino ou o dispositivo no barramento. Esse parâmetro não é usado quando o evento é para um adaptador. Lun [in, opcional] Indica o número da unidade lógica do dispositivo. Esse parâmetro não é usado quando o evento é para um adaptador. |
WMIReregister |
Indica que o driver de miniporto alterou os itens de dados ou o número de instâncias de um determinado bloco de dados que foi registrado anteriormente chamando IoWMIRegistrationControl.
PathId [in] Indica a porta ou o barramento SCSI para a solicitação. Defina esse parâmetro como 0xff para um dispositivo adaptador. Caso contrário, defina como uma ID de caminho válida. TargetId [in, opcional] Indica o controlador de destino ou o dispositivo no barramento. Esse parâmetro não é usado quando o registro é para um adaptador. Lun [in, opcional] Indica o número da unidade lógica do dispositivo. Esse parâmetro não é usado quando o registro é para um adaptador. |
HwDeviceExtension
Um ponteiro para a extensão do dispositivo de hardware. Essa é uma área de armazenamento por HBA que o driver de porta aloca e inicializa em nome do driver de miniport. Os drivers de miniporto geralmente armazenam informações específicas do HBA nessa extensão, como o estado do HBA e os intervalos de acesso mapeados para o HBA. Essa área está disponível para o driver de miniporte imediatamente após o driver de miniporto chamar StorPortInitialize. O driver de porta libera essa memória quando remove o dispositivo.
...
Parâmetros adicionais.
Valor retornado
Nenhum.
Comentários
StorPortNotification é uma função polimórfica que manipula muitos tipos diferentes de solicitações, dificultando a anotação de uma maneira que abrangeria todos os usos possíveis. Como StorPortNotification retorna VOID, o mecanismo de verificação deve assumir que o LockHandle foi adquirido conforme solicitado.
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Universal |
Cabeçalho | storport.h (inclua Storport.h) |
Biblioteca | Storport.lib |
Regras de conformidade de DDI | StorPortNotification2(storport), StorPortStatusPending, StorPortTimer(storport) |