[PATCH] include/d3d9: add missing interfaces

Biswapriyo Nath nathbappai at gmail.com
Tue Mar 24 10:06:47 CDT 2020


-------------- next part --------------
From 2b3900af7158d840542dab8e83808627be2dc005 Mon Sep 17 00:00:00 2001
From: Biswapriyo Nath <nathbappai at gmail.com>
Date: Tue, 24 Mar 2020 15:43:52 +0530
Subject: [PATCH] include/d3d9: add missing interfaces

Signed-off-by: Biswapriyo Nath <nathbappai at gmail.com>
---
 include/d3d9.h      | 183 ++++++++++++++++++++++++++++++++++++++++++++
 include/d3d9types.h |  33 +++++++-
 2 files changed, 215 insertions(+), 1 deletion(-)

diff --git a/include/d3d9.h b/include/d3d9.h
index 3ebde45..84597ea 100644
--- a/include/d3d9.h
+++ b/include/d3d9.h
@@ -2201,6 +2201,189 @@ DECLARE_INTERFACE_(IDirect3DDevice9Ex, IDirect3DDevice9)
 #define IDirect3DDevice9Ex_GetDisplayModeEx(p,a,b,c)                        (p)->GetDisplayModeEx(a,b,c)
 #endif
 
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IDirect3D9ExOverlayExtension, 0x187aeb13, 0xaaf5, 0x4c59, 0x87, 0x6d, 0xe0, 0x59, 0x8, 0x8c, 0xd, 0xf8);
+#endif
+DEFINE_GUID(IID_IDirect3D9ExOverlayExtension, 0x187aeb13, 0xaaf5, 0x4c59, 0x87, 0x6d, 0xe0, 0x59, 0x8, 0x8c, 0xd, 0xf8);
+
+#define INTERFACE IDirect3D9ExOverlayExtension
+DECLARE_INTERFACE_(IDirect3D9ExOverlayExtension, IUnknown)
+{
+    /* IUnknown */
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /* IDirect3D9ExOverlayExtension */
+    STDMETHOD(CheckDeviceOverlayType)(THIS_ UINT Adapter, D3DDEVTYPE DevType, UINT OverlayWidth,
+            UINT OverlayHeight, D3DFORMAT OverlayFormat, D3DDISPLAYMODEEX *pDisplayMode,
+            D3DDISPLAYROTATION DisplayRotation, D3DOVERLAYCAPS *pOverlayCaps) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/* IUnknown */
+#define IDirect3D9ExOverlayExtension_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3D9ExOverlayExtension_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirect3D9ExOverlayExtension_Release(p) (p)->lpVtbl->Release(p)
+/* IDirect3D9ExOverlayExtension */
+#define IDirect3D9ExOverlayExtension_CheckDeviceOverlayType(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->CheckDeviceOverlayType(p,a,b,c,d,e,f,g,h)
+#else
+/* IUnknown */
+#define IDirect3D9ExOverlayExtension_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3D9ExOverlayExtension_AddRef(p) (p)->AddRef()
+#define IDirect3D9ExOverlayExtension_Release(p) (p)->Release()
+/* IDirect3D9ExOverlayExtension */
+#define IDirect3D9ExOverlayExtension_CheckDeviceOverlayType(p,a,b,c,d,e,f,g,h) (p)->CheckDeviceOverlayType(a,b,c,d,e,f,g,h)
+#endif
+
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IDirect3DAuthenticatedChannel9, 0xff24beee, 0xda21, 0x4beb, 0x98, 0xb5, 0xd2, 0xf8, 0x99, 0xf9, 0x8a, 0xf9);
+#endif
+DEFINE_GUID(IID_IDirect3DAuthenticatedChannel9, 0xff24beee, 0xda21, 0x4beb, 0x98, 0xb5, 0xd2, 0xf8, 0x99, 0xf9, 0x8a, 0xf9);
+
+#define INTERFACE IDirect3DAuthenticatedChannel9
+DECLARE_INTERFACE_(IDirect3DAuthenticatedChannel9, IUnknown)
+{
+    /* IUnknown */
+    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObj) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /* IDirect3DAuthenticatedChannel9 */
+    STDMETHOD(GetCertificateSize)(THIS_ UINT *pCertificateSize) PURE;
+    STDMETHOD(GetCertificate)(THIS_ UINT CertifacteSize, BYTE *ppCertificate) PURE;
+    STDMETHOD(NegotiateKeyExchange)(THIS_ UINT DataSize, void *pData) PURE;
+    STDMETHOD(Query)(THIS_ UINT InputSize, const void *pInput, UINT OutputSize, void *pOutput) PURE;
+    STDMETHOD(Configure)(THIS_ UINT InputSize, const void *pInput,
+            D3DAUTHENTICATEDCHANNEL_CONFIGURE_OUTPUT *pOutput) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/* IUnknown */
+#define IDirect3DAuthenticatedChannel9_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DAuthenticatedChannel9_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirect3DAuthenticatedChannel9_Release(p) (p)->lpVtbl->Release(p)
+/* IDirect3DAuthenticatedChannel9 */
+#define IDirect3DAuthenticatedChannel9_GetCertificateSize(p,a) (p)->lpVtbl->GetCertificateSize(p,a)
+#define IDirect3DAuthenticatedChannel9_GetCertificate(p,a,b) (p)->lpVtbl->GetCertificate(p,a,b)
+#define IDirect3DAuthenticatedChannel9_NegotiateKeyExchange(p,a,b) (p)->lpVtbl->NegotiateKeyExchange(p,a,b)
+#define IDirect3DAuthenticatedChannel9_Query(p,a,b,c,d) (p)->lpVtbl->Query(p,a,b,c,d)
+#define IDirect3DAuthenticatedChannel9_Configure(p,a,b,c) (p)->lpVtbl->Configure(p,a,b,c)
+#else
+/* IUnknown */
+#define IDirect3DAuthenticatedChannel9_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3DAuthenticatedChannel9_AddRef(p) (p)->AddRef()
+#define IDirect3DAuthenticatedChannel9_Release(p) (p)->Release()
+/* IDirect3DAuthenticatedChannel9 */
+#define IDirect3DAuthenticatedChannel9_GetCertificateSize(p,a) (p)->GetCertificateSize(a)
+#define IDirect3DAuthenticatedChannel9_GetCertificate(p,a,b) (p)->GetCertificate(a,b)
+#define IDirect3DAuthenticatedChannel9_NegotiateKeyExchange(p,a,b) (p)->NegotiateKeyExchange(a,b)
+#define IDirect3DAuthenticatedChannel9_Query(p,a,b,c,d) (p)->Query(a,b,c,d)
+#define IDirect3DAuthenticatedChannel9_Configure(p,a,b,c) (p)->Configure(a,b,c)
+#endif
+
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IDirect3DCryptoSession9, 0xfa0ab799, 0x7a9c, 0x48ca, 0x8c, 0x5b, 0x23, 0x7e, 0x71, 0xa5, 0x44, 0x34);
+#endif
+DEFINE_GUID(IID_IDirect3DCryptoSession9, 0xfa0ab799, 0x7a9c, 0x48ca, 0x8c, 0x5b, 0x23, 0x7e, 0x71, 0xa5, 0x44, 0x34);
+
+#define INTERFACE IDirect3DCryptoSession9
+DECLARE_INTERFACE_(IDirect3DCryptoSession9, IUnknown)
+{
+    /* IUnknown */
+    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObj) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+    /* IDirect3DCryptoSession9 */
+    STDMETHOD(GetCertificateSize)(THIS_ UINT *pCertificateSize) PURE;
+    STDMETHOD(GetCertificate)(THIS_ UINT CertifacteSize, BYTE *ppCertificate) PURE;
+    STDMETHOD(NegotiateKeyExchange)(THIS_ UINT DataSize, void *pData) PURE;
+    STDMETHOD(EncryptionBlt)(THIS_ IDirect3DSurface9 *pSrcSurface, IDirect3DSurface9 *pDstSurface,
+            UINT DstSurfaceSize, void *pIV) PURE;
+    STDMETHOD(DecryptionBlt)(THIS_ IDirect3DSurface9 *pSrcSurface, IDirect3DSurface9 *pDstSurface,
+            UINT SrcSurfaceSize, D3DENCRYPTED_BLOCK_INFO *pEncryptedBlockInfo, void *pContentKey, void *pIV) PURE;
+    STDMETHOD(GetSurfacePitch)(THIS_ IDirect3DSurface9 *pSrcSurface, UINT *pSurfacePitch) PURE;
+    STDMETHOD(StartSessionKeyRefresh)(THIS_ void *pRandomNumber, UINT RandomNumberSize) PURE;
+    STDMETHOD(FinishSessionKeyRefresh)(THIS) PURE;
+    STDMETHOD(GetEncryptionBltKey)(THIS_ void *pReadbackKey, UINT KeySize) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/* IUnknown */
+#define IDirect3DCryptoSession9_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DCryptoSession9_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirect3DCryptoSession9_Release(p) (p)->lpVtbl->Release(p)
+/* IDirect3DCryptoSession9 */
+#define IDirect3DCryptoSession9_GetCertificateSize(p,a) (p)->lpVtbl->GetCertificateSize(p,a)
+#define IDirect3DCryptoSession9_GetCertificate(p,a,b) (p)->lpVtbl->GetCertificate(p,a,b)
+#define IDirect3DCryptoSession9_NegotiateKeyExchange(p,a,b) (p)->lpVtbl->NegotiateKeyExchange(p,a,b)
+#define IDirect3DCryptoSession9_EncryptionBlt(p,a,b,c,d) (p)->lpVtbl->EncryptionBlt(p,a,b,c,d)
+#define IDirect3DCryptoSession9_DecryptionBlt(p,a,b,c,d,e,f) (p)->lpVtbl->DecryptionBlt(p,a,b,c,d,e,f)
+#define IDirect3DCryptoSession9_GetSurfacePitch(p,a,b) (p)->lpVtbl->GetSurfacePitch(p,a,b)
+#define IDirect3DCryptoSession9_StartSessionKeyRefresh(p,a,b) (p)->lpVtbl->StartSessionKeyRefresh(p,a,b)
+#define IDirect3DCryptoSession9_FinishSessionKeyRefresh(p) (p)->lpVtbl->FinishSessionKeyRefresh(p)
+#define IDirect3DCryptoSession9_GetEncryptionBltKey(p,a,b) (p)->lpVtbl->GetEncryptionBltKey(p,a,b)
+#else
+/* IUnknown */
+#define IDirect3DCryptoSession9_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3DCryptoSession9_AddRef(p) (p)->AddRef()
+#define IDirect3DCryptoSession9_Release(p) (p)->Release()
+/* IDirect3DCryptoSession9 */
+#define IDirect3DCryptoSession9_GetCertificateSize(p,a) (p)->GetCertificateSize(a)
+#define IDirect3DCryptoSession9_GetCertificate(p,a,b) (p)->GetCertificate(a,b)
+#define IDirect3DCryptoSession9_NegotiateKeyExchange(p,a,b) (p)->NegotiateKeyExchange(a,b)
+#define IDirect3DCryptoSession9_EncryptionBlt(p,a,b,c,d) (p)->EncryptionBlt(a,b,c,d)
+#define IDirect3DCryptoSession9_DecryptionBlt(p,a,b,c,d,e,f) (p)->DecryptionBlt(a,b,c,d,e,f)
+#define IDirect3DCryptoSession9_GetSurfacePitch(p,a,b) (p)->GetSurfacePitch(a,b)
+#define IDirect3DCryptoSession9_StartSessionKeyRefresh(p,a,b) (p)->StartSessionKeyRefresh(a,b)
+#define IDirect3DCryptoSession9_FinishSessionKeyRefresh(p) (p)->FinishSessionKeyRefresh()
+#define IDirect3DCryptoSession9_GetEncryptionBltKey(p,a,b) (p)->GetEncryptionBltKey(a,b)
+#endif
+
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IDirect3DDevice9Video, 0x26dc4561, 0xa1ee, 0x4ae7, 0x96, 0xda, 0x11, 0x8a, 0x36, 0xc0, 0xec, 0x95);
+#endif
+DEFINE_GUID(IID_IDirect3DDevice9Video, 0x26dc4561, 0xa1ee, 0x4ae7, 0x96, 0xda, 0x11, 0x8a, 0x36, 0xc0, 0xec, 0x95);
+
+#define INTERFACE IDirect3DDevice9Video
+DECLARE_INTERFACE_(IDirect3DDevice9Video, IUnknown)
+{
+    /* IUnknown */
+    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObj) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /* IDirect3DDevice9Video */
+    STDMETHOD(GetContentProtectionCaps)(THIS_ const GUID *pCryptoType, const GUID *pDecodeProfile,
+            D3DCONTENTPROTECTIONCAPS *pCaps) PURE;
+    STDMETHOD(CreateAuthenticatedChannel)(THIS_ D3DAUTHENTICATEDCHANNELTYPE ChannelType,
+            IDirect3DAuthenticatedChannel9 **ppAuthenticatedChannel, HANDLE *pChannelHandle) PURE;
+    STDMETHOD(CreateCryptoSession)(THIS_ const GUID *pCryptoType, const GUID *pDecodeProfile,
+            IDirect3DCryptoSession9 **ppCryptoSession, HANDLE *pCryptoHandle) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/* IUnknown */
+#define IDirect3DDevice9Video_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DDevice9Video_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirect3DDevice9Video_Release(p) (p)->lpVtbl->Release(p)
+/* IDirect3DDevice9Video */
+#define IDirect3DDevice9Video_GetContentProtectionCaps(p,a,b,c) (p)->lpVtbl->GetContentProtectionCaps(p,a,b,c)
+#define IDirect3DDevice9Video_CreateAuthenticatedChannel(p,a,b,c) (p)->lpVtbl->CreateAuthenticatedChannel(p,a,b,c)
+#define IDirect3DDevice9Video_CreateCryptoSession(p,a,b,c,d) (p)->lpVtbl->CreateCryptoSession(p,a,b,c,d)
+#else
+/* IUnknown */
+#define IDirect3DDevice9Video_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3DDevice9Video_AddRef(p) (p)->AddRef()
+#define IDirect3DDevice9Video_Release(p) (p)->Release()
+/* IDirect3DDevice9Video */
+#define IDirect3DDevice9Video_GetContentProtectionCaps(p,a,b,c) (p)->GetContentProtectionCaps(a,b,c)
+#define IDirect3DDevice9Video_CreateAuthenticatedChannel(p,a,b,c) (p)->CreateAuthenticatedChannel(a,b,c)
+#define IDirect3DDevice9Video_CreateCryptoSession(p,a,b,c,d) (p)->CreateCryptoSession(a,b,c,d)
+#endif
+
 #endif /* !defined(D3D_DISABLE_9EX) */
 
 #ifdef __cplusplus
diff --git a/include/d3d9types.h b/include/d3d9types.h
index 56394df..58de4d7 100644
--- a/include/d3d9types.h
+++ b/include/d3d9types.h
@@ -1560,6 +1560,30 @@ typedef struct _D3DVOLUME_DESC {
 
 /* Parts added with d3d9ex */
 #if !defined(D3D_DISABLE_9EX)
+
+#define D3D_OMAC_SIZE    16
+
+typedef struct _D3D_OMAC
+{
+    BYTE Omac[D3D_OMAC_SIZE];
+} D3D_OMAC;
+
+typedef enum _D3DAUTHENTICATEDCHANNELTYPE
+{
+    D3DAUTHENTICATEDCHANNEL_D3D9        = 1,
+    D3DAUTHENTICATEDCHANNEL_DRIVER_SOFTWARE,
+    D3DAUTHENTICATEDCHANNEL_DRIVER_HARDWARE,
+} D3DAUTHENTICATEDCHANNELTYPE;
+
+typedef struct _D3DAUTHENTICATEDCHANNEL_CONFIGURE_OUTPUT
+{
+    D3D_OMAC omac;
+    GUID     ConfigureType;
+    HANDLE   hChannel;
+    UINT     SequenceNumber;
+    HRESULT  ReturnCode;
+} D3DAUTHENTICATEDCHANNEL_CONFIGURE_OUTPUT;
+
 typedef enum D3DSCANLINEORDERING
 {
     D3DSCANLINEORDERING_UNKNOWN,
@@ -1593,6 +1617,13 @@ typedef enum D3DDISPLAYROTATION
     D3DDISPLAYROTATION_270
 } D3DDISPLAYROTATION;
 
+typedef struct _D3DENCRYPTED_BLOCK_INFO
+{
+    UINT NumEncryptedBytesAtBeginning;
+    UINT NumBytesInSkipPattern;
+    UINT NumBytesInEncryptPattern;
+} D3DENCRYPTED_BLOCK_INFO;
+
 typedef struct _D3DMEMORYPRESSURE
 {
     UINT64 BytesEvictedFromProcess;
@@ -1617,7 +1648,7 @@ typedef struct _D3DPRESENTSTATS
     LARGE_INTEGER SyncGPUTime;
 } D3DPRESENTSTATS;
 
-#endif /* D3D_DISABLE_9EX */
+#endif /* !defined(D3D_DISABLE_9EX) */
 
 typedef enum _D3DSHADER_COMPARISON
 {
-- 
2.26.0



More information about the wine-devel mailing list