2025-11-28 00:35:46 +09:00

74 lines
2.3 KiB
C++

//*****************************************************************************
//
// Microsoft Windows Media
// Copyright (C) Microsoft Corporation. All rights reserved.
//
// FileName: Drm.h
//
// Abstract: Definition of class CDRM which handles DRM version 1 and
// version 7 license acquisition for protected content.
//
//*****************************************************************************
//
#if !defined(AFX_DRM_H__45D1728D_0E30_436B_BA83_9DAEF4D21BD7__INCLUDED_)
#define AFX_DRM_H__45D1728D_0E30_436B_BA83_9DAEF4D21BD7__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// Defines the current DRM operation
typedef enum DRMSTATUS
{
NONE = 0,
SILENT, // Silent license acquisition (DRM Version 7 only)
NONSILENT, // Non-silent license acquisition
INDIVIDUALIZE // Downloading individualized DRM component (DRM version 7 only)
} DRMSTATUS;
///////////////////////////////////////////////////////////////////////////////
class CDRM
{
public:
CDRM();
~CDRM();
HRESULT OnDRMStatus( /* [in] */ WMT_STATUS Status,
/* [in] */ HRESULT hr,
/* [in] */ WMT_ATTR_DATATYPE dwType,
/* [in] */ BYTE __RPC_FAR *pValue,
/* [in] */ void __RPC_FAR *pvContext );
HRESULT Init( CAudioPlay* pParent, IWMReader* pReader, LPCWSTR pwszURL );
HRESULT Exit();
HRESULT Cancel();
HRESULT AcquireLastV7LicenseNonSilently();
DWORD GetLastDRMVersion();
private:
HRESULT GetNonSilentLicense( BYTE* pValue );
HRESULT HandleAcquireLicense( BYTE *pValue );
HRESULT HandleIndividualize( BYTE *pValue );
HRESULT MakeEscapedURL( LPCWSTR pwszInURL, LPTSTR *ppszOutURL );
HRESULT LaunchURL( LPCTSTR ptszURL );
HRESULT GetShellOpenCommand( LPTSTR ptszShellOpenCommand,
DWORD cbShellOpenCommand,
LPTSTR ptszApplicationName,
DWORD cbApplicationName);
static HRESULT CopyWMGetLicenseData( WM_GET_LICENSE_DATA* pOriginalData, WM_GET_LICENSE_DATA* pDestData, DWORD* pcbDestSize );
private:
CAudioPlay* m_pParent;
IWMDRMReader* m_pDRMReader;
LPWSTR m_pwszURL;
DRMSTATUS m_statusDRM;
WM_GET_LICENSE_DATA* m_pWMGetLicenseData;
DWORD m_dwLastDRMVersion;
BOOL m_bDoNotConnectToUntrustedURL;
};
#endif // !defined(AFX_DRM_H__45D1728D_0E30_436B_BA83_9DAEF4D21BD7__INCLUDED_)