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

共有ポート上のデバイス (シリアル ポート デバイスなど) の場合は、ポート上の他のデバイスへのアクセスがロックアウトされるため、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;
}

要件

要件
対象プラットフォーム デスクトップ
Header stiusd.h (Stiusd.h を含む)