USBFN_GET_ATTACH_ACTION funzione di callback (usbfnattach.h)
Implementazione del driver di filtro che viene richiamata quando il caricatore è collegato alla porta.
Sintassi
USBFN_GET_ATTACH_ACTION UsbfnGetAttachAction;
NTSTATUS UsbfnGetAttachAction(
[in] PVOID Context,
[out] PUSBFN_ON_ATTACH OnAttach
)
{...}
Parametri
[in] Context
Puntatore a un contesto definito dal driver.
[out] OnAttach
Puntatore a una struttura USBFN_ON_ATTACH allocata dal chiamante che il driver popola con il tipo di collegamento e porta.
Valore restituito
Se l'operazione ha esito positivo, la funzione di callback deve restituire STATUS_SUCCESS o un altro valore di stato per cui NT_SUCCESS(stato) equivale a TRUE. In caso contrario, deve restituire un valore di stato per il quale NT_SUCCESS(stato) equivale a FALSE.
Commenti
Per supportare il rilevamento di collegamento e scollegamento, il driver di filtro inferiore USB deve pubblicare il supporto. Durante il processo di pubblicazione, il driver registra anche l'implementazione di questa funzione di callback. Per altre informazioni, vedere Driver di filtro USB per supportare i caricatori proprietari.
Esempio
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;
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Windows |
Versione KMDF minima | 1.0 |
Versione UMDF minima | 2,0 |
Intestazione | usbfnattach.h |
IRQL | PASSIVE_LEVEL |
Vedi anche
Driver di filtro USB per supportare i caricatori proprietari