USBFN_GET_ATTACH_ACTION fungsi panggilan balik (usbfnattach.h)

Implementasi driver filter yang dipanggil ketika pengisi daya dilampirkan ke port.

Sintaks

USBFN_GET_ATTACH_ACTION UsbfnGetAttachAction;

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

Parameter

[in] Context

Penunjuk ke konteks yang ditentukan driver.

[out] OnAttach

Penunjuk ke struktur USBFN_ON_ATTACH yang dialokasikan penelepon yang diisi driver dengan jenis pemasangan dan port.

Nilai kembali

Jika operasi berhasil, fungsi panggilan balik harus mengembalikan STATUS_SUCCESS, atau nilai status lain yang NT_SUCCESS(status) sama dengan TRUE. Jika tidak, itu harus mengembalikan nilai status yang NT_SUCCESS(status) sama dengan FALSE.

Keterangan

Untuk mendukung deteksi pemasangan dan pencopotan, driver filter usb yang lebih rendah harus menerbitkan dukungannya. Selama proses penerbitan, driver juga mendaftarkan implementasi fungsi panggilan balik ini. Untuk informasi selengkapnya, lihat driver filter USB untuk mendukung pengisi daya kepemilikan.

Contoh

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;

Persyaratan

Persyaratan Nilai
Target Platform Windows
Versi KMDF minimum 1,0
Versi UMDF minimum 2.0
Header usbfnattach.h
IRQL PASSIVE_LEVEL

Lihat juga

Driver filter USB untuk mendukung pengisi daya kepemilikan