IStiUSD::Initialize 方法 (stiusd.h)

仍然影像迷你驅動程式的 IStiUSD::Initialize 方法會初始化定義 IStiUSD 介面之 COM 物件的實例。

語法

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

參數

pHelDcb

呼叫端提供的 IStiDeviceControl COM 介面指標。

dwStiVersion

呼叫端提供的 STI 版本號碼。 此值是由 Sti.h 中的STI_VERSION所定義。

hParametersKey

呼叫端提供給要儲存裝置特定資訊的登錄機碼句柄。

傳回值

如果作業成功,方法應該會傳回S_OK。 否則,它應該會傳回 stierr.h 中定義的其中一個 STIERR 前置錯誤碼。

備註

仍然由影像迷你驅動程序導出的 IStiUSD::Initialize 方法是載入迷你驅動程序之後所呼叫的第一個 IStiUSD 方法。 方法必須初始化驅動程式和裝置。

方法應該儲存收到的 IStiDeviceControl COM 介面 指標,而且應該呼叫該介面的 IStiDeviceControl::AddRef 方法。

對於連線到專用埠的裝置 (例如 SCSI 裝置) ,此方法通常會藉由呼叫 createFile () Microsoft Windows SDK 中所述的 createFile 來建立裝置的讀取/寫入路徑,方法是使用呼叫 IStiDeviceControl::GetMyDevicePortName 取得的裝置埠名稱。

對於共用埠上的裝置, (例如串行埠裝置) ,不建議在 IStiUSD::Initialize 方法中開啟埠,因為埠上的其他裝置存取將會遭到鎖定。對於這類裝置,最好從 IStiUSD::LockDevice 方法內呼叫 CreateFile

如果開啟的裝置是 不允許對 CreateFile 進行多個呼叫的裝置, (例如連線到序列埠的裝置) ,驅動程式通常不會呼叫 CreateFile ,除非呼叫端已開啟裝置以進行數據傳輸,如下列 CodeExample 所示。

IStiUSD::Initialize 方法應該驗證收到的 STI 版本號碼,如果收到的版本不符合驅動程式的版本,則傳回錯誤。

只有當 呼叫 IStiDeviceControl::GetMyDeviceOpenMode 指出應用程式已開啟裝置進行數據傳輸時,下列範例才會開啟裝置埠。 這類程式代碼可能用於不支援多個 CreateFile 呼叫的裝置,例如序列埠裝置。

範例

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;
}

規格需求

需求
目標平台 桌面
標頭 stiusd.h (包含 Stiusd.h)