Bagikan melalui


IWDFIoTargetStateManagement::Metode mulai (wudfddi.h)

[Peringatan: UMDF 2 adalah versi terbaru UMDF dan pengganti UMDF 1. Semua driver UMDF baru harus ditulis menggunakan UMDF 2. Tidak ada fitur baru yang ditambahkan ke UMDF 1 dan ada dukungan terbatas untuk UMDF 1 pada versi Windows 10 yang lebih baru. Driver Universal Windows harus menggunakan UMDF 2. Untuk informasi selengkapnya, lihat Mulai menggunakan UMDF.]

Metode Mulai mulai mengirim permintaan antrean ke target I/O lokal.

Sintaks

HRESULT Start();

Mengembalikan nilai

Mulai mengembalikan S_OK jika operasi berhasil. Jika tidak, metode ini mungkin mengembalikan salah satu kode kesalahan:

Menampilkan kode Deskripsi
HRESULT_FROM_NT (STATUS_INVALID_DEVICE_STATE)
Perangkat telah dihapus.
 

Metode ini mungkin mengembalikan salah satu kode kesalahan lain yang ditentukan Winerror.h.

Keterangan

Jika driver Anda dapat mendeteksi kesalahan perangkat yang dapat dipulihkan, Anda mungkin ingin driver Anda memanggil IWDFIoTargetStateManagement::Stop untuk sementara berhenti mengirim permintaan ke target I/O lokal, lalu panggil Mulai untuk melanjutkan pengiriman permintaan.

Selain itu, jika driver memanggil IWDFUsbTargetPipe2::ConfigureContinuousReader untuk mengonfigurasi pembaca berkelanjutan untuk pipa USB, fungsi panggilan balik IPnpCallback::OnD0Entry driver harus memanggil Mulai untuk memulai pembaca.

Driver Anda harus memanggil Start dan IWDFIoTargetStateManagement::Stop secara sinkron. Setelah driver memanggil salah satu fungsi ini, driver tidak boleh memanggil fungsi lain sebelum yang pertama kembali.

Untuk informasi selengkapnya tentang Mulai, lihat Mengontrol Status Target I/O Umum di UMDF.

Untuk informasi selengkapnya tentang target I/O, lihat Menggunakan Target I/O di UMDF.

Contoh

Contoh kode berikut pertama-tama menunjukkan bagaimana driver dapat memperoleh antarmuka IWDFIoTargetStateManagement untuk objek pipa USB. Contoh kode kemudian menunjukkan bagaimana fungsi panggilan balik IPnpCallback::OnD0Entry dapat memanggil Mulai, jika driver menggunakan pembaca berkelanjutan untuk pipa USB.


    IWDFIoTargetStateManagement * m_pIoTargetInterruptPipeStateMgmt = NULL;

    IWDFUsbTargetFactory *  pIUsbTargetFactory = NULL;
    IWDFUsbTargetDevice *   pIUsbTargetDevice = NULL;
    IWDFUsbInterface *      pIUsbInterface = NULL;
    IWDFUsbTargetPipe *     pIUsbPipe = NULL;

    hr = m_FxDevice->QueryInterface(IID_PPV_ARGS(&pIUsbTargetFactory));
    if (FAILED(hr))
    {...}
    hr = pIUsbTargetFactory->CreateUsbTargetDevice(&pIUsbTargetDevice);
    if (FAILED(hr))
    {...}
    hr = pIUsbTargetDevice->RetrieveUsbInterface(0, &pIUsbInterface);
    if (FAILED(hr))
    {...}
    NumEndPoints = pIUsbInterface->GetNumEndPoints();
    for (UCHAR PipeIndex = 0; PipeIndex < NumEndPoints; PipeIndex++)
    {
        hr = pIUsbInterface->RetrieveUsbPipeObject(PipeIndex, &pIUsbPipe);
        if (FAILED(hr))
        {...}
        else
        {
            if (pIUsbPipe->IsInEndPoint())
            {
                if (UsbdPipeTypeInterrupt == pIUsbPipe->GetType())
                {
                    m_pIUsbInterruptPipe = pIUsbPipe;
                    hr = m_pIUsbInterruptPipe->QueryInterface(IID_PPV_ARGS(&m_pIoTargetInterruptPipeStateMgmt));
                    if (FAILED(hr))
                    {...}
                }
            }
        }
    } 

HRESULT
CMyDevice::OnD0Entry(
    __in IWDFDevice*  pWdfDevice,
    __in WDF_POWER_DEVICE_STATE  previousState
    )
{
...
    m_pIoTargetInterruptPipeStateMgmt->Start();
...
    return S_OK;
}

Persyaratan

Persyaratan Nilai
Akhir dukungan Tidak tersedia di UMDF 2.0 dan yang lebih baru.
Target Platform Desktop
Versi UMDF minimum 1,5
Header wudfddi.h (termasuk Wudfddi.h)
DLL WUDFx.dll

Lihat juga

IWDFIoTargetStateManagement

IWDFRemoteTarget::Stop