// // Microsoft Windows Media Technologies // Copyright (C) Microsoft Corporation, 1999 - 2001. All rights reserved. // cpp_quote("// SCP Data Flags") cpp_quote("#define WMDM_SCP_EXAMINE_EXTENSION 0x00000001L") cpp_quote("#define WMDM_SCP_EXAMINE_DATA 0x00000002L") cpp_quote("#define WMDM_SCP_DECIDE_DATA 0x00000008L") cpp_quote("#define WMDM_SCP_PROTECTED_OUTPUT 0x00000010L") cpp_quote("#define WMDM_SCP_UNPROTECTED_OUTPUT 0x00000020L") cpp_quote("#define WMDM_SCP_RIGHTS_DATA 0x00000040L") cpp_quote("// SCP Transfer Flags") cpp_quote("#define WMDM_SCP_TRANSFER_OBJECTDATA 0x00000020L") cpp_quote("#define WMDM_SCP_NO_MORE_CHANGES 0x00000040L") interface ISCPSecureExchange; interface ISCPSecureQuery; interface ISCPSecureQuery2; // ISCPSecureAuthenticate [ object, uuid(1DCB3A0F-33ED-11d3-8470-00C04F79DBC0), pointer_default(unique) ] interface ISCPSecureAuthenticate : IUnknown { HRESULT GetSecureQuery([out] ISCPSecureQuery **ppSecureQuery); }; // ISCPSecureQuery [ object, uuid(1DCB3A0D-33ED-11d3-8470-00C04F79DBC0), pointer_default(unique) ] interface ISCPSecureQuery : IUnknown { HRESULT GetDataDemands([out] UINT *pfuFlags, [out] DWORD *pdwMinRightsData, [out] DWORD *pdwMinExamineData, [out] DWORD *pdwMinDecideData, [in, out] BYTE abMac[WMDM_MAC_LENGTH]); HRESULT ExamineData([in] UINT fuFlags, [in, string, unique] LPWSTR pwszExtension, [in, size_is(dwSize)] BYTE *pData, [in] DWORD dwSize, [in, out] BYTE abMac[WMDM_MAC_LENGTH]); HRESULT MakeDecision([in] UINT fuFlags, [in, size_is(dwSize)] BYTE *pData, [in] DWORD dwSize, [in] DWORD dwAppSec, [in, size_is(dwSessionKeyLen)] BYTE *pbSPSessionKey, [in] DWORD dwSessionKeyLen, [in] IMDSPStorageGlobals *pStorageGlobals, [out] ISCPSecureExchange **ppExchange, [in, out] BYTE abMac[WMDM_MAC_LENGTH]); HRESULT GetRights([in, size_is(dwSize)] BYTE *pData, [in] DWORD dwSize, [in, size_is(dwSessionKeyLen)] BYTE *pbSPSessionKey, [in] DWORD dwSessionKeyLen, [in] IMDSPStorageGlobals *pStgGlobals, [out, size_is(, *pnRightsCount)] PWMDMRIGHTS *ppRights, [out] UINT *pnRightsCount, [in, out] BYTE abMac[WMDM_MAC_LENGTH]); }; // ISCPSecureQuery2 [ object, uuid(EBE17E25-4FD7-4632-AF46-6D93D4FCC72E), pointer_default(unique) ] interface ISCPSecureQuery2 : ISCPSecureQuery { HRESULT MakeDecision2([in] UINT fuFlags, [in, size_is(dwSize)] BYTE *pData, [in] DWORD dwSize, [in] DWORD dwAppSec, [in, size_is(dwSessionKeyLen)] BYTE *pbSPSessionKey, [in] DWORD dwSessionKeyLen, [in] IMDSPStorageGlobals *pStorageGlobals, [in, size_is(dwAppCertAppLen)] BYTE* pAppCertApp, [in] DWORD dwAppCertAppLen, [in, size_is(dwAppCertSPLen)] BYTE* pAppCertSP, [in] DWORD dwAppCertSPLen, [in, out, string, size_is(, *pdwRevocationURLLen)] LPWSTR* pszRevocationURL, [in, out, ref] DWORD* pdwRevocationURLLen, [out] DWORD* pdwRevocationBitFlag, [in, out, unique] ULONGLONG* pqwFileSize, [in] IUnknown* pUnknown, [out] ISCPSecureExchange **ppExchange, [in, out] BYTE abMac[WMDM_MAC_LENGTH]); }; // ISCPSecureEchange [ object, uuid(1DCB3A0E-33ED-11d3-8470-00C04F79DBC0), pointer_default(unique) ] interface ISCPSecureExchange : IUnknown { HRESULT TransferContainerData([in,size_is(dwSize)] BYTE *pData, [in] DWORD dwSize, [out] UINT *pfuReadyFlags, [in, out] BYTE abMac[WMDM_MAC_LENGTH]); HRESULT ObjectData([out,size_is(*pdwSize)] BYTE *pData, [in, out] DWORD *pdwSize, [in, out] BYTE abMac[WMDM_MAC_LENGTH]); HRESULT TransferComplete(); };