// // Copyright (c) Microsoft Corporation. All rights reserved. // cpp_quote("/* Copyright (c) Microsoft Corporation. All rights reserved. */") // This file will be processed by the MIDL tool to // produce the type library (termmgr.tlb) and marshalling code. #ifndef __TERMINAL_MANAGER_IDL__ #define __TERMINAL_MANAGER_IDL__ // Doesn't seem to work: midl_pragma warning( disable: 2039 ); import "Objsafe.idl"; import "tapi3if.idl"; // for TERMINAL_STATE, etc. import "tapi3ds.idl"; // for MST interfaces import "strmif.idl"; // for IGraphBuilder, IBaseFilter, etc. import "msp.idl"; // for MSP_HANDLE typedef enum { TMGR_TD_CAPTURE = 1, TMGR_TD_RENDER = 2, TMGR_TD_BOTH = 3 } TMGR_DIRECTION; const BSTR CLSID_String_VideoSuperclass = L"{714C6F8C-6244-4685-87B3-B91F3F9EADA7}"; const BSTR CLSID_String_StreamingSuperclass = L"{214F4ACC-AE0B-4464-8405-07029003F8E2}"; const BSTR CLSID_String_FileSuperclass = L"{B4790031-56DB-4d3e-88C8-6FFAAFA08A91}"; // // This interface is implemented on all DirectShow terminals. It provides // methods for connection, disconnection, and dynamic filter graph control. // [ uuid( AED6483B-3304-11d2-86F1-006008B0E5D2 ), helpstring("ITTerminalControl interface"), dual ] interface ITTerminalControl : IUnknown { [id(1), propget, helpstring("method get_AddressHandle")] HRESULT AddressHandle( [out] MSP_HANDLE * phtAddress ); // enters each of the internal filters into the filter graph // connects the internal filters together (if applicable) // and returns a set of pins for connection [id(2), helpstring("method ConnectTerminal")] HRESULT ConnectTerminal( [in] IGraphBuilder * pGraph, [in] DWORD dwTerminalDirection, [in, out] DWORD * pdwNumPins, [out] IPin ** ppPins ); [id(3), helpstring("method CompleteConnectTerminal")] HRESULT CompleteConnectTerminal( ); // disconnects the internal filters and removes them from the filter graph // filter graph parameter is used for validation, to make sure the terminal // is disconnected from the same graph that it was originally connected to [id(4), helpstring("method DisconnectTerminal")] HRESULT DisconnectTerminal( [in] IGraphBuilder * pGraph, [in] DWORD dwReserved ); // stops the rightmost render filter in the terminal // (needed for dynamic filter graphs) [id(5), helpstring("method RunRenderFilter")] HRESULT RunRenderFilter( ); // stops the rightmost render filter in the terminal // (needed for dynamic filter graphs) [id(6), helpstring("method StopRenderFilter")] HRESULT StopRenderFilter( ); } // // this interface is implemented by pluggable terminals // [ uuid(AED6483C-3304-11d2-86F1-006008B0E5D2), helpstring("TAPI 3.0 ITPluggableTerminalInitialization interface"), dual ] interface ITPluggableTerminalInitialization : IUnknown { [id(1), helpstring("method InitializeDynamic")] HRESULT InitializeDynamic ( [in] IID iidTerminalClass, [in] DWORD dwMediaType, [in] TERMINAL_DIRECTION Direction, [in] MSP_HANDLE htAddress ); } [ object, uuid(7170F2DE-9BE3-11D0-A009-00AA00B605A4), helpstring("ITTerminalManager Interface"), pointer_default(unique), hidden ] interface ITTerminalManager : IUnknown { [id(1), helpstring("method GetDynamicTerminalClasses")] HRESULT GetDynamicTerminalClasses( [in] DWORD dwMediaTypes, [in, out] DWORD * pdwNumClasses, [out] IID * pTerminalClasses ); [id(2), helpstring("method CreateDynamicTerminal")] HRESULT CreateDynamicTerminal( [in] IUnknown * pOuterUnknown, [in] IID iidTerminalClass, [in] DWORD dwMediaType, [in] TERMINAL_DIRECTION Direction, [in] MSP_HANDLE htAddress, [out] ITTerminal ** ppTerminal ); }; [ uuid(BB33DEC6-B2C7-46E6-9ED1-498B91FA85AC), helpstring("ITTerminalManager2 Interface"), pointer_default(unique), hidden ] interface ITTerminalManager2 : ITTerminalManager { [id(3), helpstring("method GetPluggableSuperclasses")] HRESULT GetPluggableSuperclasses( [in, out] DWORD * pdwNumSuperclasses, [out] IID * pSuperclasses ); [id(4), helpstring("method GetPluggableTerminalClasses")] HRESULT GetPluggableTerminalClasses( [in] IID iidSuperclass, [in] DWORD dwMediaTypes, [in, out] DWORD * pdwNumClasses, [out] IID * pTerminalClasses ); }; // // --- ITPluggableTerminal --- // This interface describes the registry entry for a terminal // [ object, uuid(924A3723-A00B-4f5f-9FEE-8E9AEB9E82AA), dual, helpstring("ITPluggableTerminalClassRegistration Interface"), pointer_default(unique) ] interface ITPluggableTerminalClassRegistration : IDispatch { // // Terminal Friendly Name // [id(1), propget, helpstring("property Name")] HRESULT Name( [out, retval] BSTR* pName ); [id(1), propput, helpstring("property Name")] HRESULT Name( [in] BSTR bstrName ); // // Company name // [id(2), propget, helpstring("property Company")] HRESULT Company( [out, retval] BSTR* pCompany ); [id(2), propput, helpstring("property Company")] HRESULT Company( [in] BSTR bstrCompany ); // // Terminal Version // [id(3), propget, helpstring("property Version")] HRESULT Version( [out, retval] BSTR* pVersion ); [id(3), propput, helpstring("property Version")] HRESULT Version( [in] BSTR bstrVersion ); // // TerminalClass // [id(4), propget, helpstring("property TerminalClass")] HRESULT TerminalClass( [out, retval] BSTR* pTerminalClass ); [id(4), propput, helpstring("property TerminalClass")] HRESULT TerminalClass( [in] BSTR bstrTerminalClass ); // // This CLSID is used to CoCreate the terminal // [id(5), propget, helpstring("property CLSID")] HRESULT CLSID( [out, retval] BSTR* pCLSID ); [id(5), propput, helpstring("property CLSID")] HRESULT CLSID( [in] BSTR bstrCLSID ); // // Direction supported by terminal // [id(6), propget, helpstring("property Direction")] HRESULT Direction( [out, retval] TMGR_DIRECTION* pDirection ); [id(6), propput, helpstring("property Direction")] HRESULT Direction( [in] TMGR_DIRECTION nDirection ); // // Media Types supported by terminal // [id(7), propget, helpstring("property MediaTypes")] HRESULT MediaTypes( [out, retval] long* pMediaTypes ); [id(7), propput, helpstring("property MediaTypes")] HRESULT MediaTypes( [in] long nMediaTypes ); // // Add terminal into the registry // If already exist an entry for terminal // edit this entry // [id(8), helpstring("method Add")] HRESULT Add( [in] BSTR bstrSuperclass ); // // Delete the temrinal entry from registry // [id(9), helpstring("method Delete")] HRESULT Delete( [in] BSTR bstrSuperclass ); // // Get all information from registry for // specific terminal // [id(10), helpstring("method GetTerminalClassInfo")] HRESULT GetTerminalClassInfo( [in] BSTR bstrSuperclass ); }; // // --- ITPluggableTerminalSuperlassRegistration --- // This interface describes the registry entry for a terminal superclass // [ object, uuid(60D3C08A-C13E-4195-9AB0-8DE768090F25), dual, helpstring("ITPluggableTerminalSuperclassRegistration Interface"), pointer_default(unique) ] interface ITPluggableTerminalSuperclassRegistration : IDispatch { [id(1), propget, helpstring("property Name")] HRESULT Name( [out, retval] BSTR* pName ); [id(1), propput, helpstring("property Name")] HRESULT Name( [in] BSTR bstrName ); [id(2), propget, helpstring("property CLSID")] HRESULT CLSID( [out, retval] BSTR* pCLSID ); [id(2), propput, helpstring("property CLSID")] HRESULT CLSID( [in] BSTR bstrCLSID ); [id(3), helpstring("method Add")] HRESULT Add( ); [id(4), helpstring("method Delete")] HRESULT Delete( ); [id(5), helpstring("method GetTerminalSuperclassInfo")] HRESULT GetTerminalSuperclassInfo( ); [id(6), propget, helpstring("method TerminalClasses")] HRESULT TerminalClasses( [out, retval] VARIANT* pTerminals ); [id(7), helpstring("method EnumerateTerminalClasses"), hidden] HRESULT EnumerateTerminalClasses( [out, retval] IEnumTerminalClass** ppTerminals ); }; [ uuid(28DCD85B-ACA4-11D0-A028-00AA00B605A4), version(1.0), helpstring("TAPI3 Terminal Manager 1.0 Type Library") ] library TERMMGRLib { importlib("stdole2.tlb"); [ uuid(7170F2E0-9BE3-11D0-A009-00AA00B605A4), helpstring("TAPI 3.0 TerminalManager Class"), hidden ] coclass TerminalManager { [default] interface ITTerminalManager; }; [ uuid(BB918E32-2A5C-4986-AB40-1686A034390A), helpstring("PluggableTerminalSuperclass Class") ] coclass PluggableSuperclassRegistration { [default] interface ITPluggableTerminalSuperclassRegistration; }; [ uuid(45234E3E-61CC-4311-A3AB-248082554482), helpstring("PluggableTerminalClass Class") ] coclass PluggableTerminalRegistration { [default] interface ITPluggableTerminalClassRegistration; }; }; #endif // __TERMINAL_MANAGER_IDL__