USBFN_GET_ATTACH_ACTION função de retorno de chamada (usbfnattach.h)
A implementação do driver de filtro que é invocada quando o carregador é anexado à porta.
Sintaxe
USBFN_GET_ATTACH_ACTION UsbfnGetAttachAction;
NTSTATUS UsbfnGetAttachAction(
[in] PVOID Context,
[out] PUSBFN_ON_ATTACH OnAttach
)
{...}
Parâmetros
[in] Context
Um ponteiro para um contexto definido pelo driver.
[out] OnAttach
Um ponteiro para uma estrutura de USBFN_ON_ATTACH alocada pelo chamador que o driver preenche com o tipo de anexação e porta.
Retornar valor
Se a operação for bem-sucedida, a função de retorno de chamada deverá retornar STATUS_SUCCESS ou outro valor status para o qual NT_SUCCESS(status) é igual a TRUE. Caso contrário, ele deverá retornar um valor status para o qual NT_SUCCESS(status) é igual a FALSE.
Comentários
Para dar suporte à detecção de anexação e desanexação, o driver de filtro inferior USB deve publicar seu suporte. Durante o processo de publicação, o driver também registra sua implementação dessa função de retorno de chamada. Para obter mais informações, consulte Driver de filtro USB para dar suporte a carregadores proprietários.
Exemplos
NTSTATUS
UsbLowerFilter_GetAttachAction(
__in PVOID Context,
__out PUSBFN_ON_ATTACH OnAttach
)
{
NTSTATUS Status;
PPDCP_CONTEXT PdcpContext = NULL;
LARGE_INTEGER Timeout;
PAGED_CODE();
// Get driver context
PdcpContext = DeviceGetUsbLowerFilterContext((WDFDEVICE)Context);
// Clear the event
KeClearEvent(&PdcpContext->AbortAttachOperation);
// Wait for a while
Timeout.QuadPart = WDF_REL_TIMEOUT_IN_MS(PdcpContext->DetectionDelayInms);
Status = KeWaitForSingleObject(
&PdcpContext->AbortAttachOperation,
Executive,
KernelMode,
FALSE,
&Timeout);
switch (Status)
{
case STATUS_SUCCESS:
// The abort event was set.
Status = STATUS_REQUEST_ABORTED;
break;
case STATUS_TIMEOUT:
Status = STATUS_SUCCESS;
break;
default:
break;
}
if (NT_SUCCESS(Status))
{
OnAttach->AttachAction = PdcpContext->CurrentAttachAction;
OnAttach->PortType = PdcpContext->CurrentPortType;
}
return Status;
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Windows |
Versão mínima do KMDF | 1.0 |
Versão mínima do UMDF | 2,0 |
Cabeçalho | usbfnattach.h |
IRQL | PASSIVE_LEVEL |
Confira também
Driver de filtro USB para dar suporte a carregadores proprietários