headers: Add tsvirtualchannels.idl file.

Signed-off-by: Biswapriyo Nath <nathbappai@gmail.com>
Signed-off-by: Liu Hao <lh_mouse@126.com>
diff --git a/mingw-w64-headers/Makefile.am b/mingw-w64-headers/Makefile.am
index 4c52681..a0fbe62 100644
--- a/mingw-w64-headers/Makefile.am
+++ b/mingw-w64-headers/Makefile.am
@@ -208,6 +208,7 @@
   include/tlbref.idl \
   include/tlogstg.idl \
   include/tpcshrd.idl \
+  include/tsvirtualchannels.idl \
   include/tuner.idl \
   include/uianimation.idl \
   include/uiautomationclient.idl \
diff --git a/mingw-w64-headers/include/tsvirtualchannels.idl b/mingw-w64-headers/include/tsvirtualchannels.idl
new file mode 100644
index 0000000..f46463b
--- /dev/null
+++ b/mingw-w64-headers/include/tsvirtualchannels.idl
@@ -0,0 +1,102 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+
+cpp_quote("#include <winapifamily.h>")
+
+cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)")
+
+import "unknwn.idl";
+import "oaidl.idl";
+
+interface IWTSPlugin;
+interface IWTSListener;
+interface IWTSListenerCallback;
+interface IWTSVirtualChannelCallback;
+interface IWTSVirtualChannelManager;
+interface IWTSVirtualChannel;
+
+
+cpp_quote("#define WTS_PROPERTY_DEFAULT_CONFIG L\"DefaultConfig\"") 
+
+cpp_quote("#define E_MAPPEDRENDERER_SHUTDOWN HRESULT_FROM_WIN32(ERROR_INVALID_STATE)")
+cpp_quote("#define E_DUPLICATE_WINDOW_HINT HRESULT_FROM_WIN32(ERROR_ALREADY_EXISTS)")
+
+[object, uuid(a1230201-1439-4e62-a414-190d0ac3d40e), oleautomation]
+interface IWTSPlugin : IUnknown
+{
+  HRESULT Initialize([in] IWTSVirtualChannelManager *pChannelMgr);
+  HRESULT Connected(void);
+  HRESULT Disconnected([in] DWORD dwDisconnectCode);
+  HRESULT Terminated(void);
+}
+
+[object, uuid(a1230206-9a39-4d58-8674-cdb4dff4e73b), oleautomation]
+interface IWTSListener : IUnknown
+{
+  HRESULT GetConfiguration([out] IPropertyBag **ppPropertyBag);
+}
+
+[object, uuid(a1230203-d6a7-11d8-b9fd-000bdbd1f198), oleautomation]
+interface IWTSListenerCallback : IUnknown
+{
+  HRESULT OnNewChannelConnection([in] IWTSVirtualChannel *pChannel, [in,ptr] BSTR data, [out] WINBOOL *pbAccept, [out] IWTSVirtualChannelCallback **ppCallback);
+}
+
+[object, uuid(a1230204-d6a7-11d8-b9fd-000bdbd1f198), oleautomation]
+interface IWTSVirtualChannelCallback : IUnknown
+{
+  HRESULT OnDataReceived([in] ULONG cbSize, [in, size_is(cbSize)] BYTE *pBuffer);
+  HRESULT OnClose(void);
+}
+
+cpp_quote("#define TS_VC_LISTENER_STATIC_CHANNEL 0x00000001")
+[object, uuid(a1230205-d6a7-11d8-b9fd-000bdbd1f198), oleautomation]
+interface IWTSVirtualChannelManager : IUnknown
+{
+  HRESULT CreateListener([in, string] const char *pszChannelName, [in] ULONG uFlags, [in] IWTSListenerCallback *pListenerCallback, [out] IWTSListener **ppListener);
+}
+
+[object, uuid(a1230207-d6a7-11d8-b9fd-000bdbd1f198), oleautomation]
+interface IWTSVirtualChannel : IUnknown
+{
+  HRESULT Write([in] ULONG cbSize, [in, size_is(cbSize)] BYTE *pBuffer, [in] IUnknown *pReserved);
+  HRESULT Close(void);
+}
+
+cpp_quote( "EXTERN_GUID( RDCLIENT_BITMAP_RENDER_SERVICE, 0xe4cc08cb, 0x942e, 0x4b19, 0x85, 0x4, 0xbd, 0x5a, 0x89, 0xa7, 0x47, 0xf5);" )
+
+[object, uuid(d3e07363-087c-476c-86a7-dbb15f46ddb4), oleautomation]
+interface IWTSPluginServiceProvider : IUnknown
+{
+  HRESULT GetService([in] GUID ServiceId, [out] IUnknown **ppunkObject);
+}
+
+typedef struct __BITMAP_RENDERER_STATISTICS {
+  DWORD dwFramesDelivered;
+  DWORD dwFramesDropped;
+} BITMAP_RENDERER_STATISTICS, *PBITMAP_RENDERER_STATISTICS;
+
+[object, uuid(5b7acc97-f3c9-46f7-8c5b-fa685d3441b1), oleautomation]
+interface IWTSBitmapRenderer : IUnknown
+{
+  HRESULT Render([in] GUID imageFormat, [in] DWORD dwWidth, [in] DWORD dwHeight, [in] LONG cbStride, [in] DWORD cbImageBuffer, [in, size_is(cbImageBuffer)] BYTE *pImageBuffer);
+  HRESULT GetRendererStatistics([out] BITMAP_RENDERER_STATISTICS *pStatistics);
+  HRESULT RemoveMapping(void);
+}
+
+[object, uuid(d782928e-fe4e-4e77-ae90-9cd0b3e3b353), oleautomation]
+interface IWTSBitmapRendererCallback : IUnknown
+{
+  HRESULT OnTargetSizeChanged([in] RECT rcNewSize);
+}
+
+[object, uuid(ea326091-05fe-40c1-b49c-3d2ef4626a0e), oleautomation]
+interface IWTSBitmapRenderService : IUnknown
+{
+  HRESULT GetMappedRenderer([in] UINT64 mappingId, [in] IWTSBitmapRendererCallback *pMappedRendererCallback, [out] IWTSBitmapRenderer **ppMappedRenderer);
+}
+
+cpp_quote("#endif /* WINAPI_PARTITION_DESKTOP */")