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 设备) )的设备,该方法通常使用通过调用IStiDeviceControl::GetMyDevicePortName 获取的设备端口名称,通过调用 Microsoft Windows SDK 文档) (中所述,创建设备的读/写路径。
对于共享端口 ((例如串行端口设备) )的设备,不建议在 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) |