オブジェクトが特定のインターフェースをサポートしているかを識別します。指定されたインターフェイスがサポートされていた場合は、オブジェクトの参照カウントをインクリメント(1 だけ増加)します。
HRESULT QueryInterface( REFIID iid, // インターフェースID void **ppvObject // インターフェースポインタのアドレス );
メソッドのインデックス: 0
要求するインターフェイスの参照識別子(インターフェース ID )を指定します。
目的のインターフェイスがサポートされていた場合に、インターフェイスへのポインタが格納されるポインタ変数のアドレスを指定します。オブジェクトが iid パラメータで指定されたインターフェースをサポートしていない場合には、この変数に 0 (NULL) が格納されます。
成功すると 0x00000000 (S_OK) を返します。
失敗すると 0x80004002 (E_NOINTERFACE) または 0x80004003 (E_POINTER) が返ります。また、コンポーネントによっては独自のエラー値を返す場合があります。
QueryInterface メソッドは、オブジェクトが持つほかのインターフェースへクライアントがアクセスできるようにします。
ある1つのオブジェクトに対して、そのオブジェクトのいずれのインターフェースからの IUnknown インターフェースへの問い合わせも、常に同じポインタ値を返します。これにより、クライアントは、2つのインターフェースポインタが同じコンポーネントを指しているかどうかを、両方のインターフェースから QueryInterface を呼び出し、返された IUnknown インターフェースポインタを比較することによって決定することができます。 IUnknown 以外のインターフェースへの問い合わせは、(たとえ同一のインターフェースポインタから、同じインターフェースへの問い合わせの場合であっても)同じポインタ値を返すことは保証されていません。
このメソッド呼び出しによって取得されたインターフェースを使用しなくなった場合には、 Release メソッドを呼び出してインターフェースを解放しなくてはなりません。
Windows 95 以降 / Windows NT 3.1 以降