[與此頁面相關聯的功能,自定義檔案和串流處理程式,是舊版功能。 MediaStreamSource 類別已取代它。 MediaStreamSource 類別 已針對 Windows 10 和 Windows 11 優化。 Microsoft強烈建議新程式代碼盡可能使用 MediaStreamSource 類別,而不是 自定義檔案和串流處理程式。 Microsoft建議使用舊版 API 的現有程式代碼,盡可能改寫成使用新的 API。]
當應用程式指定您的檔案處理程式 DLL 或資料流處理程式時,系統會依類別識別元在登錄中查詢它並載入。 然後,系統會呼叫 DLL 的 DllGetClassObject 函式,以建立檔案或數據流處理程序的實例。 下列範例(以 C++ 撰寫)顯示檔案處理程式如何建立實例。
// Main DLL entry point.
STDAPI DllGetClassObject(const CLSID FAR& rclsid,
const IID FAR& riid, void FAR* FAR* ppv)
{
HRESULT hresult;
hresult = CAVIFileCF::Create(rclsid, riid, ppv);
return hresult;
}
HRESULT CAVIFileCF::Create(const CLSID FAR& rclsid,
const IID FAR& riid, void FAR* FAR* ppv)
{
// The following is the class factory creation and not an
// actual PAVIFile.
CAVIFileCF FAR* pAVIFileCF;
IUnknown FAR* pUnknown;
HRESULT hresult;
// Create the instance.
pAVIFileCF = new FAR CAVIFileCF(rclsid, &pUnknown);
if (pAVIFileCF == NULL)
return ResultFromScode(E_OUTOFMEMORY);
// Set the interface pointer.
hresult = pUnknown->QueryInterface(riid, ppv);
if (FAILED(GetScode(hresult)))
delete pAVIFileCF;
return hresult;
}