Bagikan melalui


IStiUSD::Inisialisasi metode (stiusd.h)

Metode IStiUSD::Initialize minidriver gambar masih menginisialisasi instans objek COM yang menentukan antarmuka IStiUSD .

Sintaks

HRESULT Initialize(
  PSTIDEVICECONTROL pHelDcb,
  DWORD             dwStiVersion,
  HKEY              hParametersKey
);

Parameter

pHelDcb

Penunjuk yang disediakan penelepon ke Antarmuka COM IStiDeviceControl.

dwStiVersion

Nomor versi STI yang disediakan penelepon. Nilai ini ditentukan oleh STI_VERSION dalam Sti.h.

hParametersKey

Handel yang disediakan penelepon ke kunci registri tempat informasi khusus perangkat disimpan.

Nilai kembali

Jika operasi berhasil, metode harus mengembalikan S_OK. Jika tidak, itu harus mengembalikan salah satu kode kesalahan awalan STIERR yang ditentukan dalam stierr.h.

Keterangan

Metode IStiUSD::Initialize , yang diekspor oleh minidriver gambar diam, adalah metode IStiUSD pertama yang dipanggil setelah minidriver dimuat. Metode harus menginisialisasi pengandar dan perangkat.

Metode ini harus menyimpan penunjuk Antarmuka IStiDeviceControl COM yang diterima, dan harus memanggil metode IStiDeviceControl::AddRef antarmuka tersebut.

Untuk perangkat yang terhubung ke port khusus (seperti perangkat SCSI), metode ini biasanya membuat jalur baca/tulis ke perangkat dengan memanggil CreateFile (dijelaskan dalam dokumentasi Microsoft Windows SDK), menggunakan nama port perangkat yang diperoleh dengan memanggil IStiDeviceControl::GetMyDevicePortName.

Untuk perangkat pada port bersama (seperti perangkat port serial), membuka port di metode IStiUSD::Initialize tidak disarankan, karena akses ke perangkat lain pada port akan dikunci. Untuk perangkat tersebut, lebih baik memanggil CreateFile dari dalam metode IStiUSD::LockDevice .

Jika perangkat yang dibuka adalah salah satu di mana beberapa panggilan ke CreateFile tidak diizinkan (seperti perangkat yang terhubung ke port serial), driver biasanya tidak memanggil CreateFile kecuali pemanggil telah membuka perangkat untuk transfer data, seperti yang diilustrasikan dalam CodeExample berikut.

Metode IStiUSD::Initialize harus memvalidasi nomor versi STI yang diterima dan mengembalikan kesalahan jika versi yang diterima tidak cocok dengan versi driver.

Contoh berikut membuka port perangkat hanya jika panggilan ke IStiDeviceControl::GetMyDeviceOpenMode menunjukkan bahwa aplikasi telah membuka perangkat untuk transfer data. Kode tersebut mungkin digunakan untuk perangkat yang tidak dapat mendukung beberapa panggilan CreateFile , seperti perangkat port serial.

Contoh

STDMETHODIMP MyUSDDevice::Initialize(
    PSTIDEVICECONTROL pDcb,
    DWORD             dwStiVersion,
    HKEY              hParametersKey)
{
    HRESULT hres = STI_OK;
    DWORD   dwMode = 0;
    if (!pDcb)
    {
        hres = STIERR_INVALID_PARAM;
    }
    else
    {
        // Store IStiDeviceControl object pointer
        m_pDcb = pDcb;
        m_pDcb->AddRef();
        // If we opened in data mode - should open device right now,
        // otherwise postpone open till lock
        m_pDcb->GetMyDeviceOpenMode(&dwMode);
        if (dwMode & STI_DEVICE_CREATE_DATA)
            hres = OpenMyPort();
    }
    return hres;
}

Persyaratan

Persyaratan Nilai
Target Platform Desktop
Header stiusd.h (termasuk Stiusd.h)