共用方式為


IStiUSD::Initialize 方法 (stiusd.h)

仍然影像 minidriver 的 IStiUSD::Initialize 方法會初始化 COM 物件的實例,這個實例會定義 IStiUSD 介面。

語法

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 方法,由仍由圖像迷你驅動程式導出,是載入 minidriver 之後呼叫的第一個 IStiUSD 方法。 方法必須初始化驅動程式和裝置。

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

針對連線到專用埠的裝置(例如 SCSI 裝置),方法通常會呼叫 CreateFile 來建立裝置的讀取/寫入路徑(如 Microsoft Windows SDK 檔所述),方法是使用呼叫 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)