Compartilhar via


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.
VOID StorPortNotification(
  _In_     SCSI_NOTIFICATION_TYPE NotificationType,
  _In_     PVOID                  HwDeviceExtension,
  _In_opt_ UCHAR                  PathId
);
IoTargetRequestServiceTime Indica ao Storport o tempo necessário para processar uma solicitação especificada.
VOID StorPortNotification(
  _In_ SCSI_NOTIFICATION_TYPE NotificationType,
  _In_ PVOID                  HwDeviceExtension,
  _In_ ULONGLONG              Duration,
  _In_ PSCSI_REQUEST_BLOCK    Srb
);

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
VOID StorPortNotification(
  _In_    SCSI_NOTIFICATION_TYPE NotificationType,
  _In_    PVOID                  HwDeviceExtension,
  _Inout_ PLARGE_INTEGER         TickCount
);
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.
VOID StorPortNotification(
  _In_ SCSI_NOTIFICATION_TYPE NotificationType,
  _In_ PVOID                  HwDeviceExtension,
  _In_ PSCSI_REQUEST_BLOCK    Srb
);
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.
VOID StorPortNotification(
  _In_ SCSI_NOTIFICATION_TYPE NotificationType,
  _In_ PVOID                  HwDeviceExtension,
  _In_ PHW_TIMER              HwStorTimer,
  _In_ ULONG                  MiniportTimerValue
);

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.
VOID StorPortNotification(
  _In_     SCSI_NOTIFICATION_TYPE NotificationType,
  _In_     PVOID                  HwDeviceExtension,
  _In_     PWNODE_EVENT_ITEM      WMIEvent,
  _In_     UCHAR                  PathId,
  _In_opt_ UCHAR                  TargetId,
  _In_opt_ UCHAR                  Lun
);

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.
VOID StorPortNotification(
  _In_     SCSI_NOTIFICATION_TYPE NotificationType,
  _In_     PVOID                  HwDeviceExtension,
  _In_     UCHAR                  PathId,
  _In_opt_ UCHAR                  TargetId,
  _In_opt_ UCHAR                  Lun
);

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)

Confira também

StorPortInitialize