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)