/**
* 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.
*/
#ifndef _INC_MSDRM
#define _INC_MSDRM
#include <msdrmdefs.h>
#ifdef __cplusplus
extern "C" {
#endif
HRESULT WINAPI DRMCreateClientSession(
DRMCALLBACK pfnCallback,
UINT uCallbackVersion,
PWSTR wszGroupIDProviderType,
PWSTR wszGroupID,
DRMHSESSION *phClient
);
HRESULT WINAPI DRMAcquireIssuanceLicenseTemplate(
DRMHSESSION hClient,
UINT uFlags,
VOID *pvReserved,
UINT cReserved,
PWSTR *pwszReserved,
PWSTR wszURL,
VOID *pvContext
);
HRESULT WINAPI DRMActivate(
DRMHSESSION hClient,
UINT uFlags,
UINT uLangID,
DRM_ACTSERV_INFO *pActServInfo,
VOID *pvContext,
HWND hParentWnd
);
HRESULT WINAPI DRMGetServiceLocation(
DRMHSESSION hClient,
UINT uServiceType,
UINT uServiceLocation,
PWSTR wszIssuanceLicense,
UINT *puServiceURLLength,
PWSTR wszServiceURL
);
HRESULT WINAPI DRMIsActivated(
DRMHSESSION hClient,
UINT uFlags,
DRM_ACTSERV_INFO *pActServInfo
);
HRESULT WINAPI DRMCheckSecurity(
DRMENVHANDLE hEnv,
UINT cLevel
);
HRESULT WINAPI DRMCloseSession(
DRMHSESSION hSession
);
HRESULT WINAPI DRMCreateLicenseStorageSession(
DRMENVHANDLE hEnv,
DRMHANDLE hDefaultLibrary,
DRMHSESSION hClient,
UINT uFlags,
PWSTR wszIssuanceLicense,
DRMHSESSION *phLicenseStorage
);
HRESULT WINAPI DRMDuplicateSession(
DRMHSESSION hSessionIn,
DRMHSESSION *phSessionOut
);
HRESULT WINAPI DRMGetClientVersion(
DRM_CLIENT_VERSION_INFO *pDRMClientVersionInfo
);
HRESULT WINAPI DRMGetEnvironmentInfo(
DRMENVHANDLE handle,
PWSTR wszAttribute,
DRMENCODINGTYPE *peEncoding,
UINT *pcBuffer,
BYTE *pbBuffer
);
HRESULT WINAPI DRMGetIntervalTime(
DRMPUBHANDLE hIssuanceLicense,
UINT *pcDays
);
HRESULT WINAPI DRMGetOwnerLicense(
DRMPUBHANDLE hIssuanceLicense,
UINT *puLength,
PWSTR wszOwnerLicense
);
HRESULT WINAPI DRMGetProcAddress(
DRMHANDLE hLibrary,
PWSTR wszProcName,
FARPROC *ppfnProcAddress
);
HRESULT WINAPI DRMGetSecurityProvider(
UINT uFlags,
UINT *puTypeLen,
PWSTR wszType,
UINT *puPathLen,
PWSTR wszPath
);
HRESULT WINAPI DRMInitEnvironment(
DRMSECURITYPROVIDERTYPE eSecurityProviderType,
DRMSPECTYPE eSpecification,
PWSTR wszSecurityProvider,
PWSTR wszManifestCredentials,
PWSTR wszMachineCredentials,
DRMENVHANDLE *phEnv,
DRMHANDLE *phDefaultLibrary
);
HRESULT WINAPI DRMLoadLibrary(
DRMENVHANDLE hEnv,
DRMSPECTYPE eSpecification,
PWSTR wszLibraryProvider,
PWSTR wszCredentials,
DRMHANDLE *phLibrary
);
HRESULT WINAPI DRMRegisterContent(
WINBOOL fRegister
);
HRESULT WINAPI DRMRegisterRevocationList(
DRMENVHANDLE hEnv,
PWSTR wszRevocationList
);
HRESULT WINAPI DRMRepair(void);
HRESULT WINAPI DRMSetIntervalTime(
DRMPUBHANDLE hIssuanceLicense,
UINT cDays
);
HRESULT WINAPI DRMSetGlobalOptions(
DRMGLOBALOPTIONS eGlobalOptions,
LPVOID pvdata,
DWORD dwlen
);
HRESULT WINAPI DRMAddRightWithUser(
DRMPUBHANDLE hIssuanceLicense,
DRMPUBHANDLE hRight,
DRMPUBHANDLE hUser
);
HRESULT WINAPI DRMClearAllRights(
DRMPUBHANDLE hIssuanceLicense
);
HRESULT WINAPI DRMCreateIssuanceLicense(
SYSTEMTIME *pstTimeFrom,
SYSTEMTIME *pstTimeUntil,
PWSTR wszReferralInfoName,
PWSTR wszReferralInfoURL,
DRMPUBHANDLE hOwner,
PWSTR wszIssuanceLicense,
DRMHANDLE hBoundLicense,
DRMPUBHANDLE *phIssuanceLicense
);
HRESULT WINAPI DRMCreateRight(
PWSTR wszRightName,
SYSTEMTIME *pstFrom,
SYSTEMTIME *pstUntil,
UINT cExtendedInfo,
PWSTR *pwszExtendedInfoName,
PWSTR *pwszExtendedInfoValue,
DRMPUBHANDLE *phRight
);
HRESULT WINAPI DRMCreateUser(
PWSTR wszUserName,
PWSTR wszUserId,
PWSTR wszUserIdType,
DRMPUBHANDLE *phUser
);
HRESULT WINAPI DRMGetApplicationSpecificData(
DRMPUBHANDLE hIssuanceLicense,
UINT uIndex,
UINT *puNameLength,
PWSTR wszName,
UINT *puValueLength,
PWSTR wszValue
);
HRESULT WINAPI DRMGetIssuanceLicenseInfo(
DRMPUBHANDLE hIssuanceLicense,
SYSTEMTIME *pstTimeFrom,
SYSTEMTIME *pstTimeUntil,
UINT uFlags,
UINT *puDistributionPointNameLength,
PWSTR wszDistributionPointName,
UINT *puDistributionPointURLLength,
PWSTR wszDistributionPointURL,
DRMPUBHANDLE *phOwner,
WINBOOL *pfOfficial
);
HRESULT WINAPI DRMGetIssuanceLicenseTemplate(
DRMPUBHANDLE hIssuanceLicense,
UINT *puIssuanceLicenseTemplateLength,
PWSTR wszIssuanceLicenseTemplate
);
HRESULT WINAPI DRMGetMetaData(
DRMPUBHANDLE hIssuanceLicense,
UINT *puContentIdLength,
PWSTR wszContentId,
UINT *puContentIdTypeLength,
PWSTR wszContentIdType,
UINT *puSKUIdLength,
PWSTR wszSKUId,
UINT *puSKUIdTypeLength,
PWSTR wszSKUIdType,
UINT *puContentTypeLength,
PWSTR wszContentType,
UINT *puContentNameLength,
PWSTR wszContentName
);
HRESULT WINAPI DRMGetNameAndDescription(
DRMPUBHANDLE hIssuanceLicense,
UINT uIndex,
UINT *pulcid,
UINT *puNameLength,
PWSTR wszName,
UINT *puDescriptionLength,
PWSTR wszDescription
);
HRESULT WINAPI DRMGetRevocationPoint(
DRMPUBHANDLE hIssuanceLicense,
UINT *puIdLength,
PWSTR wszId,
UINT *puIdTypeLength,
PWSTR wszIdType,
UINT *puURLLength,
PWSTR wszURL,
SYSTEMTIME *pstFrequency,
UINT *puNameLength,
PWSTR wszName,
UINT *puPublicKeyLength,
PWSTR wszPublicKey
);
HRESULT WINAPI DRMGetRightExtendedInfo(
DRMPUBHANDLE hRight,
UINT uIndex,
UINT *puExtendedInfoNameLength,
PWSTR wszExtendedInfoName,
UINT *puExtendedInfoValueLength,
PWSTR wszExtendedInfoValue
);
HRESULT WINAPI DRMGetRightInfo(
DRMPUBHANDLE hRight,
UINT *puRightNameLength,
PWSTR wszRightName,
SYSTEMTIME *pstFrom,
SYSTEMTIME *pstUntil
);
HRESULT WINAPI DRMGetSignedIssuanceLicense(
DRMENVHANDLE hEnv,
DRMPUBHANDLE hIssuanceLicense,
UINT uFlags,
BYTE *pbSymKey,
UINT cbSymKey,
PWSTR wszSymKeyType,
PWSTR wszClientLicensorCertificate,
DRMCALLBACK pfnCallback,
PWSTR wszURL,
VOID *pvContext
);
HRESULT WINAPI DRMGetUsagePolicy(
DRMPUBHANDLE hIssuanceLicense,
UINT uIndex,
DRM_USAGEPOLICY_TYPE *peUsagePolicyType,
WINBOOL *pfExclusion,
UINT *puNameLength,
PWSTR wszName,
UINT *puMinVersionLength,
PWSTR wszMinVersion,
UINT *puMaxVersionLength,
PWSTR wszMaxVersion,
UINT *puPublicKeyLength,
PWSTR wszPublicKey,
UINT *puDigestAlgorithmLength,
PWSTR wszDigestAlgorithm,
UINT *pcbDigest,
BYTE *pbDigest
);
HRESULT WINAPI DRMGetUserInfo(
DRMPUBHANDLE hUser,
UINT *puUserNameLength,
PWSTR wszUserName,
UINT *puUserIdLength,
PWSTR wszUserId,
UINT *puUserIdTypeLength,
PWSTR wszUserIdType
);
HRESULT WINAPI DRMGetUserRights(
DRMPUBHANDLE hIssuanceLicense,
DRMPUBHANDLE hUser,
UINT uIndex,
DRMPUBHANDLE *phRight
);
HRESULT WINAPI DRMGetUsers(
DRMPUBHANDLE hIssuanceLicense,
UINT uIndex,
DRMPUBHANDLE *phUser
);
HRESULT WINAPI DRMSetApplicationSpecificData(
DRMPUBHANDLE hIssuanceLicense,
WINBOOL fDelete,
PWSTR wszName,
PWSTR wszValue
);
HRESULT WINAPI DRMSetMetaData(
DRMPUBHANDLE hIssuanceLicense,
PWSTR wszContentId,
PWSTR wszContentIdType,
PWSTR wszSKUId,
PWSTR wszSKUIdType,
PWSTR wszContentType,
PWSTR wszContentName
);
HRESULT WINAPI DRMSetNameAndDescription(
DRMPUBHANDLE hIssuanceLicense,
WINBOOL fDelete,
UINT lcid,
PWSTR wszName,
PWSTR wszDescription
);
HRESULT WINAPI DRMSetRevocationPoint(
DRMPUBHANDLE hIssuanceLicense,
WINBOOL fDelete,
PWSTR wszId,
PWSTR wszIdType,
PWSTR wszURL,
SYSTEMTIME *pstFrequency,
PWSTR wszName,
PWSTR wszPublicKey
);
HRESULT WINAPI DRMSetUsagePolicy(
DRMPUBHANDLE hIssuanceLicense,
DRM_USAGEPOLICY_TYPE eUsagePolicyType,
WINBOOL fDelete,
WINBOOL fExclusion,
PWSTR wszName,
PWSTR wszMinVersion,
PWSTR wszMaxVersion,
PWSTR wszPublicKey,
PWSTR wszDigestAlgorithm,
BYTE *pbDigest,
UINT cbDigest
);
HRESULT WINAPI DRMCloseEnvironmentHandle(
DRMENVHANDLE hEnv
);
HRESULT WINAPI DRMCloseHandle(
DRMHANDLE handle
);
HRESULT WINAPI DRMClosePubHandle(
DRMPUBHANDLE hPub
);
HRESULT WINAPI DRMCloseQueryHandle(
DRMQUERYHANDLE hQuery
);
HRESULT WINAPI DRMDuplicateEnvironmentHandle(
DRMENVHANDLE hToCopy,
DRMENVHANDLE *phCopy
);
HRESULT WINAPI DRMDuplicateHandle(
DRMHANDLE hToCopy,
DRMHANDLE *phCopy
);
HRESULT WINAPI DRMDuplicatePubHandle(
DRMPUBHANDLE hPubIn,
DRMPUBHANDLE *phPubOut
);
HRESULT WINAPI DRMGetUnboundLicenseAttribute(
DRMQUERYHANDLE hQueryRoot,
PWSTR wszAttributeType,
UINT iWhich,
DRMENCODINGTYPE *peEncoding,
UINT *pcBuffer,
BYTE *pbBuffer
);
HRESULT WINAPI DRMGetUnboundLicenseAttributeCount(
DRMQUERYHANDLE hQueryRoot,
PWSTR wszAttributeType,
UINT *pcAttributes
);
HRESULT WINAPI DRMGetUnboundLicenseObject(
DRMQUERYHANDLE hQueryRoot,
PWSTR wszSubObjectType,
UINT iIndex,
DRMQUERYHANDLE *phSubQuery
);
HRESULT WINAPI DRMGetUnboundLicenseObjectCount(
DRMQUERYHANDLE hQueryRoot,
PWSTR wszSubObjectType,
UINT *pcSubObjects
);
HRESULT WINAPI DRMParseUnboundLicense(
PWSTR wszCertificate,
DRMQUERYHANDLE *phQueryRoot
);
HRESULT WINAPI DRMCreateBoundLicense(
DRMENVHANDLE hEnv,
DRMBOUNDLICENSEPARAMS *pParams,
PWSTR wszLicenseChain,
DRMHANDLE *phBoundLicense,
DRMHANDLE *phErrorLog
);
HRESULT WINAPI DRMCreateEnablingPrincipal(
DRMENVHANDLE hEnv,
DRMHANDLE hLibrary,
PWSTR wszObject,
DRMID *pidPrincipal,
PWSTR wszCredentials,
DRMHANDLE *pHEnablingPrincipal
);
HRESULT WINAPI DRMGetBoundLicenseAttribute(
DRMHANDLE hQueryRoot,
PWSTR wszAttribute,
UINT iWhich,
DRMENCODINGTYPE *peEncoding,
UINT *pcBuffer,
BYTE *pbBuffer
);
HRESULT WINAPI DRMGetBoundLicenseAttributeCount(
DRMHANDLE hQueryRoot,
PWSTR wszAttribute,
UINT *pcAttributes
);
HRESULT WINAPI DRMGetBoundLicenseObject(
DRMHANDLE hQueryRoot,
PWSTR wszSubObjectType,
UINT iWhich,
DRMHANDLE *phSubObject
);
HRESULT WINAPI DRMGetBoundLicenseObjectCount(
DRMHANDLE hQueryRoot,
PWSTR wszSubObjectType,
UINT *pcSubObject
);
HRESULT WINAPI DRMAcquireAdvisories(
DRMHSESSION hLicenseStorage,
PWSTR wszLicense,
PWSTR wszURL,
VOID *pvContext
);
HRESULT WINAPI DRMAcquireLicense(
DRMHSESSION hSession,
UINT uFlags,
PWSTR wszGroupIdentityCredential,
PWSTR wszRequestedRights,
PWSTR wszCustomData,
PWSTR wszURL,
VOID *pvContext
);
HRESULT WINAPI DRMAddLicense(
DRMHSESSION hLicenseStorage,
UINT uFlags,
PWSTR wszLicense
);
HRESULT WINAPI DRMConstructCertificateChain(
UINT cCertificates,
PWSTR *rgwszCertificates,
UINT *pcChain,
PWSTR wszChain
);
HRESULT WINAPI DRMDeconstructCertificateChain(
PWSTR wszChain,
UINT iWhich,
UINT *pcCert,
PWSTR wszCert
);
HRESULT WINAPI DRMDeleteLicense(
DRMHSESSION hSession,
PWSTR wszLicenseId
);
HRESULT WINAPI DRMEnumerateLicense(
DRMHSESSION hSession,
UINT uFlags,
UINT uIndex,
WINBOOL *pfSharedFlag,
UINT *puCertificateDataLen,
PWSTR wszCertificateData
);
HRESULT WINAPI DRMGetCertificateChainCount(
PWSTR wszChain,
UINT *pcCertCount
);
HRESULT WINAPI DRMAttest(
DRMHANDLE hEnablingPrincipal,
PWSTR wszData,
DRMATTESTTYPE eType,
UINT *pcStrLen,
PWSTR wszAttestedBlob
);
HRESULT WINAPI DRMCreateEnablingBitsDecryptor(
DRMHANDLE hBoundLicense,
PWSTR wszRight,
DRMHANDLE hAuxLib,
PWSTR wszAuxPlug,
DRMHANDLE *phDecryptor
);
HRESULT WINAPI DRMCreateEnablingBitsEncryptor(
DRMHANDLE hBoundLicense,
PWSTR wszRight,
DRMHANDLE hAuxLib,
PWSTR wszAuxPlug,
DRMHANDLE *phEncryptor
);
HRESULT WINAPI DRMDecrypt(
DRMHANDLE hCryptoProvider,
UINT iPosition,
UINT cNumInBytes,
BYTE *pbInData,
UINT *pcNumOutBytes,
BYTE *pbOutData
);
HRESULT WINAPI DRMEncrypt(
DRMHANDLE hCryptoProvider,
UINT iPosition,
UINT cNumInBytes,
BYTE *pbInData,
UINT *pcNumOutBytes,
BYTE *pbOutData
);
HRESULT WINAPI DRMVerify(
PWSTR wszData,
UINT *pcStrLenAttestedData,
PWSTR wszAttestedData,
DRMATTESTTYPE *peType,
UINT *pcPrincipalChain,
PWSTR wszPrincipalChain,
UINT *pcManifestChain,
PWSTR wszManifestChain
);
HRESULT WINAPI DRMDecode(
PWSTR wszAlgID,
PWSTR wszEncodedString,
UINT *puDecodedDataLen,
BYTE *pbDecodedData
);
HRESULT WINAPI DRMEncode(
PWSTR wszAlgID,
UINT uDataLen,
BYTE *pbDecodedData,
UINT *puEncodedStringLen,
PWSTR wszEncodedString
);
HRESULT WINAPI DRMGetInfo(
DRMHANDLE handle,
PWSTR wszAttribute,
DRMENCODINGTYPE *peEncoding,
UINT *pcBuffer,
BYTE *pbBuffer
);
HRESULT WINAPI DRMGetTime(
DRMENVHANDLE hEnv,
DRMTIMETYPE eTimerIdType,
SYSTEMTIME *poTimeObject
);
#if (_WIN32_WINNT >= 0x0600)
HRESULT WINAPI DRMIsWindowProtected(
HWND hwnd,
WINBOOL *pfProtected
);
HRESULT WINAPI DRMRegisterProtectedWindow(
DRMENVHANDLE hEnv,
HWND hwnd
);
HRESULT WINAPI DRMAcquireIssuanceLicenseTemplate(
DRMHSESSION hClient,
UINT uFlags,
VOID *pvReserved,
UINT cReserved,
PWSTR *pwszReserved,
PWSTR wszURL,
VOID *pvContext
);
#endif /*(_WIN32_WINNT >= 0x0600)*/
#if (_WIN32_WINNT >= 0x0601)
HRESULT WINAPI DRMGetSignedIssuanceLicenseEx(
DRMENVHANDLE hEnv,
DRMPUBHANDLE hIssuanceLicense,
UINT uFlags,
BYTE *pbSymKey,
UINT cbSymKey,
PWSTR wszSymKeyType,
VOID *pvReserved,
DRMHANDLE hEnablingPrincipal,
DRMHANDLE hBoundLicense,
DRMCALLBACK pfnCallback,
VOID *pvContext
);
#endif /*(_WIN32_WINNT >= 0x0601)*/
#ifdef __cplusplus
}
#endif
#endif /*_INC_MSDRM*/