windows-nt/Source/XPSP1/NT/public/sdk/inc/termmgr.idl
2020-09-26 16:20:57 +08:00

402 lines
11 KiB
Plaintext

//
// 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__