USBFN_GET_ATTACH_ACTION fonction de rappel (usbfnattach.h)
Implémentation du pilote de filtre qui est appelée lorsque le chargeur est attaché au port.
Syntaxe
USBFN_GET_ATTACH_ACTION UsbfnGetAttachAction;
NTSTATUS UsbfnGetAttachAction(
[in] PVOID Context,
[out] PUSBFN_ON_ATTACH OnAttach
)
{...}
Paramètres
[in] Context
Pointeur vers un contexte défini par le pilote.
[out] OnAttach
Pointeur vers une structure USBFN_ON_ATTACH allouée par l’appelant que le pilote remplit avec le type d’attachement et de port.
Valeur de retour
Si l’opération réussit, la fonction de rappel doit retourner STATUS_SUCCESS, ou une autre valeur d’état pour laquelle NT_SUCCESS(status) a la valeur TRUE. Sinon, il doit retourner une valeur d’état pour laquelle NT_SUCCESS(status) a la valeur FALSE.
Remarques
Pour prendre en charge la détection d’attachement et de détachement, le pilote de filtre inférieur USB doit publier sa prise en charge. Pendant le processus de publication, le pilote inscrit également son implémentation de cette fonction de rappel. Pour plus d’informations, consultez pilote de filtre USB pour prendre en charge les chargeurs propriétaires.
Exemples
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;
Exigences
Exigence | Valeur |
---|---|
plateforme cible | Windows |
version minimale de KMDF | 1.0 |
version minimale de UMDF | 2.0 |
d’en-tête | usbfnattach.h |
IRQL | PASSIVE_LEVEL |
Voir aussi
pilote de filtre USB pour prendre en charge les chargeurs propriétaires