Freigeben über


USBFN_GET_ATTACH_ACTION Rückruffunktion (usbfnattach.h)

Die Implementierung des Filtertreibers, die aufgerufen wird, wenn das Ladegerät an den Port angeschlossen ist.

Syntax

USBFN_GET_ATTACH_ACTION UsbfnGetAttachAction;

NTSTATUS UsbfnGetAttachAction(
  [in]  PVOID Context,
  [out] PUSBFN_ON_ATTACH OnAttach
)
{...}

Parameter

[in] Context

Ein Zeiger auf einen vom Treiber definierten Kontext.

[out] OnAttach

Ein Zeiger auf eine vom Aufrufer zugewiesene USBFN_ON_ATTACH Struktur, die der Treiber mit dem Typ der Anfügung und des Ports auffüllt.

Rückgabewert

Wenn der Vorgang erfolgreich ist, muss die Rückruffunktion STATUS_SUCCESS oder einen anderen status Wert zurückgeben, für den NT_SUCCESS(status) true entspricht. Andernfalls muss ein status Wert zurückgegeben werden, für den NT_SUCCESS(status) false entspricht.

Hinweise

Um die Erkennung von An- und Abkoppeln zu unterstützen, muss der USB-Unterfiltertreiber seine Unterstützung veröffentlichen. Während des Veröffentlichungsprozesses registriert der Treiber auch die Implementierung dieser Rückruffunktion. Weitere Informationen finden Sie unter USB-Filtertreiber zur Unterstützung proprietärer Ladegeräte.

Beispiele

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;

Anforderungen

Anforderung Wert
Zielplattform Windows
KMDF-Mindestversion 1.0
UMDF-Mindestversion 2.0
Kopfzeile usbfnattach.h
IRQL PASSIVE_LEVEL

Weitere Informationen

USB-Filtertreiber zur Unterstützung proprietärer Ladegeräte