次の方法で共有


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 ドキュメントで説明) を呼び出し、IStiDeviceControl::GetMyDevicePortNameを呼び出して取得したデバイス ポート名を使用して、デバイスへの読み取り/書き込みパスを作成します。

共有ポート上のデバイス (シリアル ポート デバイスなど) の場合は、IStiUSD::Initialize メソッドでポートを開くのは推奨されません。ポート上の他のデバイスへのアクセスはロックアウトされるためです。このようなデバイスの場合は、IStiUSD::LockDevice メソッド内から CreateFile を呼び出す方が適切です。

開いているデバイスが、CreateFile への複数の呼び出しが許可されていない場合 (シリアル ポートに接続されているデバイスなど)、次の CodeExampleに示すように、呼び出し元がデータ転送用にデバイスを開かない限り、通常、ドライバーは CreateFile を呼び出しません。

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 を含む)