次の方法で共有


IMFASFContentInfo::P arseHeader メソッド (wmcontainer.h)

ASF ヘッダー内の情報を解析し、その情報を使用して ContentInfo オブジェクトの値を設定します。 ヘッダー全体を 1 つのバッファーに渡すか、複数の要素で送信できます。

構文

HRESULT ParseHeader(
  [in] IMFMediaBuffer *pIHeaderBuffer,
  [in] QWORD          cbOffsetWithinHeader
);

パラメーター

[in] pIHeaderBuffer

ヘッダーの一部またはすべてを含むバッファー オブジェクトの IMFMediaBuffer インターフェイスへのポインター。 バッファーには、ヘッダー オブジェクトに含まれるオブジェクト (つまり、ヘッダー オブジェクトの Reserved2 フィールドまでのすべてのもの) を含めず、ヘッダー オブジェクトのサイズである 30 バイト以上を含める必要があります。

[in] cbOffsetWithinHeader

ヘッダーの先頭を基準としたバッファー内の最初のバイトのオフセット (バイト単位)。

戻り値

このメソッドは HRESULT を返します。 有効な値を次の表に示しますが、これ以外にもあります。

リターン コード 説明
S_OK
ヘッダーは完全に解析され、検証されます。
MF_E_ASF_INVALIDDATA
入力バッファーに有効な ASF データが含まれていません。
MF_E_BUFFERTOOSMALL
入力バッファーが小さすぎます。
MF_S_ASF_PARSEINPROGRESS
メソッドは成功しましたが、渡されたヘッダーは不完全でした。 これは、ヘッダーを分割して渡すときの最後の呼び出し以外のすべての呼び出しの成功したリターン コードです。

解説

ヘッダーを分割して渡すと、ContentInfo オブジェクトは、ヘッダー全体が解析されるまでバッファー オブジェクトへの参照を保持します。 したがって、このメソッドに渡されるバッファーに対して書き込む必要はありません。

Header オブジェクトの先頭には、メモリ内に次のレイアウトがあります。

フィールド名 サイズ (バイト単位)
オブジェクト ID 16
オブジェクト サイズ 8
ヘッダー オブジェクトの数 4
Reserved1 1
Reserved2 1
 

ParseHeader の最初の呼び出しでは、Rerserved2 までおよび Rerserved2 を含むすべてのものが読み取られます。そのため、少なくとも 30 バイトが必要です。 ( IMFASFContentInfo::GetHeaderSize メソッドは Object ID フィールドと Object Size フィールドのみを読み取るので、そのメソッドには少なくとも 24 バイトが必要であることに注意してください)。

要件

   
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2008 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー wmcontainer.h
Library Mfuuid.lib

関連項目

IMFASFContentInfo

新しい ASF ファイルの ContentInfo オブジェクトの初期化