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) |