共用方式為


配置處理常式和Byte-Stream處理常式

本主題描述來源解析程式如何建立媒體來源的內部詳細資料。 如果您要實作 Media Foundation 的自訂媒體來源,而且您想要透過來源解析程式將媒體來源提供給應用程式,請閱讀本主題。

來源解析程式可以從 URL 或位元組資料流程 (建立媒體來源,也就是 IMFByteStream 指標) 。 若要這樣做,它會使用稱為 處理常式的協助程式物件。 針對 URL,來源解析程式會使用 配置處理常式。 對於位元組資料流程,它會使用 位元組資料流程處理常式

配置處理常式會採用 URL 作為輸入,並建立媒體來源或位元組資料流程。 如果它建立位元組資料流程,來源解析程式會將它傳遞至位元組資料流程處理常式,以建立媒體來源。 下圖說明此程式。

顯示來源解析程式的圖表

配置處理常式

當應用程式呼叫 IMFSourceResolver::CreateObjectFromURL 或其非同步對等專案 BeginCreateObjectFromURL時,會使用配置處理常式。

來源解析程式會在登錄中查閱配置處理常式。 架構處理常式會依 URL 配置列出,其位於下列索引鍵之下:

HKEY_CURRENT_USER
   Software
      Microsoft
         Windows Media Foundation
            SchemeHandlers
               <scheme>
                  {00000000-0000-0000-0000-000000000000} = REG_SZ
HKEY_LOCAL_MACHINE
   Software
      Microsoft
         Windows Media Foundation
            SchemeHandlers
               <scheme>
                  {00000000-0000-0000-0000-000000000000} = REG_SZ

其中< scheme >是處理常式設計來剖析的 URL 配置。 配置包含尾端 ':' 字元;例如,「HTTP:」。

若要註冊新的配置處理常式,請以標準字串形式新增名稱為配置處理常式 CLSID 的專案: {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} 。 專案的值是字串 (REG_SZ) 包含處理常式的簡短描述,例如「我的配置處理常式」。專案的重要部分是 CLSID。 來源解析程式會使用此 CLSID 呼叫 CoCreateInstance 來建立處理常式。

配置處理常式會公開 IMFSchemeHandler 介面。 如果來源解析程式找到符合 URL 配置的配置處理常式,來源解析程式會呼叫 IMFSchemeHandler::BeginCreateObject,傳入原始 URL。 配置處理常式會開啟 URL,並嘗試剖析內容。 此時,配置處理常式有兩個選項:

  • 建立媒體來源。
  • 建立位元組資料流程。

如果它建立媒體來源,來源解析程式會將媒體來源傳回至應用程式。 如果它建立位元組資料流程,來源解析程式會嘗試尋找適當的位元組資料流程處理常式,如下一節所述。

Byte-Stream處理常式

當應用程式呼叫 IMFSourceResolver::CreateObjectFromByteStream 或其非同步對等 專案 BeginCreateObjectFromByteStream時,會使用位元組資料流程處理常式。 配置處理常式傳回位元組資料流程時也會使用它們,如先前所述。

如同配置處理常式,位元組資料流程處理常式會列在登錄中。 它們會依副檔名或 MIME 類型列出, (或) 兩者皆在下列索引鍵下列出:

HKEY_CURRENT_USER
   Software
      Microsoft
         Windows Media Foundation
            ByteStreamHandlers
               <ExtensionOrMimeType>
                  {00000000-0000-0000-0000-000000000000} = REG_SZ
HKEY_LOCAL_MACHINE
   Software
      Microsoft
         Windows Media Foundation
            ByteStreamHandlers
               <ExtensionOrMimeType>
                  {00000000-0000-0000-0000-000000000000} = REG_SZ

其中< ExtensionOrMimeType >是副檔名或 MIME 類型。 副檔名包括初始 '.' 字元;例如 ,「.wmv」。

副檔名是應用程式提供的 URL 的一部分。 MIME 類型可能透過位元組資料流程上的 MF_BYTESTREAM_CONTENT_TYPE 屬性來使用。

若要註冊新的位元組資料流程處理常式,請在標準字串表單中新增名稱為處理常式 CLSID 的專案。 專案的值是字串 (REG_SZ) 包含處理常式的簡短描述,例如「My Byte-Stream Handler」。來源解析程式會呼叫 CoCreateInstance ,以從 CLSID 建立處理常式。 您可以在多個擴充功能或 MIME 類型下註冊相同的處理常式。

位元組資料流程處理常式會公開 IMFByteStreamHandler 介面。 如果來源解析程式找到相符的位元組資料流程處理常式,它會呼叫 IMFByteStreamHandler::BeginCreateObject。 這個方法的輸入是位元組資料流程的指標,如果有的話,加上原始 URL。 位元組資料流程處理常式會從位元組資料流程讀取,直到剖析足夠的資料以建立媒體來源為止。

來源解析程式