xpmgr/BuildTools/Include/drmexternals.idl

228 lines
10 KiB
Plaintext

//*@@@+++@@@@******************************************************************
//
// Microsoft Windows Media Digital Rights Management
// Copyright (C) Microsoft Corporation. All rights reserved.
//
//*@@@---@@@@******************************************************************
///////////////////////////////////////////////////////////////////////////////
//
// Note: A number of definitions that were previously defined here
// are now located in wmdrmsdk.idl instead.
//
///////////////////////////////////////////////////////////////////////////////
import "wmdrmsdk.idl";
///////////////////////////////////////////////////////////////////////////////
//
// DRM properties
//
///////////////////////////////////////////////////////////////////////////////
// List of DRM Simple Query actions
cpp_quote( "static const WCHAR *g_wszWMDRM_IsDRM = L\"IsDRM\";" )
cpp_quote( "static const WCHAR *g_wszWMDRM_IsDRMCached = L\"IsDRMCached\";" )
cpp_quote( "static const WCHAR *g_wszWMDRM_BaseLicenseAcqURL = L\"BaseLAURL\";" )
cpp_quote( "static const WCHAR *g_wszWMDRM_Rights = L\"Rights\";" )
cpp_quote( "static const WCHAR *g_wszWMDRM_LicenseID = L\"LID\";" )
cpp_quote( "static const WCHAR *g_wszWMDRM_DRMHeader = L\"DRMHeader.\";" )
cpp_quote( "static const WCHAR *g_wszWMDRM_DRMHeader_KeyID = L\"DRMHeader.KID\";" )
cpp_quote( "static const WCHAR *g_wszWMDRM_DRMHeader_LicenseAcqURL = L\"DRMHeader.LAINFO\";" )
cpp_quote( "static const WCHAR *g_wszWMDRM_DRMHeader_ContentID = L\"DRMHeader.CID\";" )
cpp_quote( "static const WCHAR *g_wszWMDRM_DRMHeader_IndividualizedVersion = L\"DRMHeader.SECURITYVERSION\";" )
cpp_quote( "static const WCHAR *g_wszWMDRM_DRMHeader_ContentDistributor = L\"DRMHeader.ContentDistributor\";" )
cpp_quote( "static const WCHAR *g_wszWMDRM_DRMHeader_SubscriptionContentID = L\"DRMHeader.SubscriptionContentID\";" )
cpp_quote( "#ifndef DRM_PLAYLIST_TYPES_DEFINED" )
cpp_quote( "#define DRM_PLAYLIST_TYPES_DEFINED 1")
///////////////////////////////////////////////////////////////////////////////
//
// Playlist data flags for DRM_PLAYLIST_CONTENT_ID.dwValidFields
//
///////////////////////////////////////////////////////////////////////////////
cpp_quote( "#define DRM_PLAYLIST_DATA_V2_VALID ((DWORD) 0x00000001)" )
cpp_quote( "#define DRM_PLAYLIST_DATA_V1_VALID ((DWORD) 0x00000002)" )
cpp_quote( "#define DRM_PLAYLIST_DATA_OTHER_VALID ((DWORD) 0x00000004)" )
///////////////////////////////////////////////////////////////////////////////
//
// Playlist burn flags
//
///////////////////////////////////////////////////////////////////////////////
cpp_quote( "#define DRM_CANCEL_PLAYLIST_BURN ((DWORD) 0x00000001)" )
cpp_quote( "#define DRM_COMMIT_PLAYLIST_BURN ((DWORD) 0x00000002)" )
///////////////////////////////////////////////////////////////////////////////
//
// structure to hold DRM Playlist content Identification data
//
///////////////////////////////////////////////////////////////////////////////
typedef struct __tagDRM_PLAYLIST_CONTENT_ID
{
LPCWSTR lpcwszV2Header;
LPCSTR lpcszV1KID;
BYTE *pbOtherData;
DWORD cbOtherData;
DWORD dwUniqueIDForSession;
DWORD dwValidFields;
}DRM_PLAYLIST_CONTENT_ID;
cpp_quote( "#endif // DRM_PLAYLIST_TYPES_DEFINED" )
///////////////////////////////////////////////////////////////////////////////
//
// This enum specifies the different DRM rights available
//
///////////////////////////////////////////////////////////////////////////////
typedef enum WMT_RIGHTS
{
WMT_RIGHT_PLAYBACK = 0x00000001,
WMT_RIGHT_COPY_TO_NON_SDMI_DEVICE = 0x00000002,
WMT_RIGHT_COPY_TO_CD = 0x00000008,
WMT_RIGHT_COPY_TO_SDMI_DEVICE = 0x00000010,
WMT_RIGHT_ONE_TIME = 0x00000020,
WMT_RIGHT_SAVE_STREAM_PROTECTED = 0x00000040,
WMT_RIGHT_COPY = 0x00000080,
WMT_RIGHT_COLLABORATIVE_PLAY = 0x00000100,
WMT_RIGHT_SDMI_TRIGGER = 0x00010000,
WMT_RIGHT_SDMI_NOMORECOPIES = 0x00020000,
} WMT_RIGHTS;
///////////////////////////////////////////////////////////////////////////////
//
// DRM device registration type flags
//
///////////////////////////////////////////////////////////////////////////////
cpp_quote( "#define DRM_DEVICE_REGISTER_TYPE_STREAMING ((DWORD) 0x00000001)" )
cpp_quote( "#define DRM_DEVICE_REGISTER_TYPE_STORAGE ((DWORD) 0x00000002)" )
///////////////////////////////////////////////////////////////////////////////
//
// Protection schemes guids
//
///////////////////////////////////////////////////////////////////////////////
cpp_quote( "#ifndef DRM_PROTECTION_SCHEMES_DEFINED" )
cpp_quote( "#define DRM_PROTECTION_SCHEMES_DEFINED 1")
cpp_quote( "EXTERN_GUID( WMDRM_PROTECTION_SCHEME_ACP, 0xc3fd11c6, 0xf8b7, 0x4d20, 0xB0, 0x08, 0x1d, 0xb1, 0x7d, 0x61, 0xf2, 0xda );" )
cpp_quote( "EXTERN_GUID( WMDRM_PROTECTION_SCHEME_MAX_VGA_RESOLUTION, 0xd783a191, 0xe083, 0x4baf, 0xb2, 0xda, 0xe6, 0x9f, 0x91, 0x0b, 0x37, 0x72 );" )
cpp_quote( "EXTERN_GUID( WMDRM_PROTECTION_SCHEME_MAX_COMPONENT_RESOLUTION, 0x811c5110, 0x46c8, 0x4c6e, 0x81, 0x63, 0xc0, 0x48, 0x2a, 0x15, 0xd4, 0x7e );" )
cpp_quote( "EXTERN_GUID( WMDRM_PROTECTION_SCHEME_DOWNSAMPLE_REQUIRED, 0x8f81a453, 0x998c, 0x4596, 0xb1, 0x50, 0xf8, 0x48, 0x6d, 0xf6, 0xf2, 0xe6 );" )
//
// The following GUIDS are defined to support different resolution values in future for analog video
// FSDK only understands a BYTE value for config data for the output protection type and so any
// value more than 255 cannot be handled
// By defining multiple GUIDS for resolution values > 255, we work around this problem
// APP will be required to understand these GUIDS and apply output protection as defined by these GUIDS
//
/* d9619433-ec9f-489e-9e07-770dedd8bd04 */
cpp_quote( "EXTERN_GUID( WMDRM_PROTECTION_SCHEME_MAX_VGA_RESOLUTION_1, 0xd9619433, 0xec9f, 0x489e, 0x9e, 0x07, 0x77, 0x0d, 0xed, 0xd8, 0xbd, 0x04 );" )
/* a24f0a24-5c92-4737-9b21-a23e4fed322e */
cpp_quote( "EXTERN_GUID( WMDRM_PROTECTION_SCHEME_MAX_VGA_RESOLUTION_2, 0xa24f0a24, 0x5c92, 0x4737, 0x9b, 0x21, 0xa2, 0x3e, 0x4f, 0xed, 0x32, 0x2e );" )
/* c4db4310-a1ae-422e-b7a7-21bc3473da77 */
cpp_quote( "EXTERN_GUID( WMDRM_PROTECTION_SCHEME_MAX_VGA_RESOLUTION_3, 0xc4db4310, 0xa1ae, 0x422e, 0xb7, 0xa7, 0x21, 0xbc, 0x34, 0x73, 0xda, 0x77 );" )
/* e84e4d21-3b1c-44bc-a2ec-c48108587cad */
cpp_quote( "EXTERN_GUID( WMDRM_PROTECTION_SCHEME_MAX_VGA_RESOLUTION_4, 0xe84e4d21, 0x3b1c, 0x44bc, 0xa2, 0xec, 0xc4, 0x81, 0x08, 0x58, 0x7c, 0xad );" )
/* ec3a1c03-dd4e-47f7-bfe5-aee753486671 */
cpp_quote( "EXTERN_GUID( WMDRM_PROTECTION_SCHEME_MAX_COMPONENT_RESOLUTION_1, 0xec3a1c03, 0xdd4e, 0x47f7, 0xbf, 0xe5, 0xae, 0xe7, 0x53, 0x48, 0x66, 0x71 );" )
/* 327803ca-d914-4da3-9728-e19e82be8c25 */
cpp_quote( "EXTERN_GUID( WMDRM_PROTECTION_SCHEME_MAX_COMPONENT_RESOLUTION_2, 0x327803ca, 0xd914, 0x4da3, 0x97, 0x28, 0xe1, 0x9e, 0x82, 0xbe, 0x8c, 0x25 );" )
/* 36d9c83f-af07-4727-ab74-ca6931ba69f3 */
cpp_quote( "EXTERN_GUID( WMDRM_PROTECTION_SCHEME_MAX_COMPONENT_RESOLUTION_3, 0x36d9c83f, 0xaf07, 0x4727, 0xab, 0x74, 0xca, 0x69, 0x31, 0xba, 0x69, 0xf3 );" )
/* 9443d876-1d46-40cb-bde5-9cc1464c9baf */
cpp_quote( "EXTERN_GUID( WMDRM_PROTECTION_SCHEME_MAX_COMPONENT_RESOLUTION_4, 0x9443d876, 0x1d46, 0x40cb, 0xbd, 0xe5, 0x9c, 0xc1, 0x46, 0x4c, 0x9b, 0xaf );" )
cpp_quote( "#endif // DRM_PROTECTION_SCHEMES_DEFINED" )
///////////////////////////////////////////////////////////////////////////////
//
// structure to hold Requested License Data information
//
///////////////////////////////////////////////////////////////////////////////
cpp_quote( "#ifndef DRM_WM_GET_LIC_DATA_DEFINED" )
cpp_quote( "#define DRM_WM_GET_LIC_DATA_DEFINED 1")
typedef struct _WMGetLicenseData
{
DWORD dwSize;
HRESULT hr;
BSTR wszURL;
WCHAR *wszLocalFilename;
BYTE *pbPostData;
DWORD dwPostDataSize;
} WM_GET_LICENSE_DATA;
cpp_quote( "#endif // DRM_WM_GET_LIC_DATA_DEFINED" )
///////////////////////////////////////////////////////////////////////////////
//
// Key types used in Secure Import
//
///////////////////////////////////////////////////////////////////////////////
cpp_quote( "#define WMDRM_KEYTYPE_RC4 0" )
cpp_quote( "#define WMDRM_KEYTYPE_COCKTAIL 1" )
///////////////////////////////////////////////////////////////////////////////
//
// structure to hold the Session Key for Secure Import
//
///////////////////////////////////////////////////////////////////////////////
cpp_quote( "#ifndef WMDRM_IMPORT_SESSION_KEY_DEFINED" )
cpp_quote( "#define WMDRM_IMPORT_SESSION_KEY_DEFINED 1")
typedef struct __tagWMDRM_IMPORT_SESSION_KEY
{
DWORD dwKeyType;
DWORD cbKey;
BYTE rgbKey[1]; /* [cbKey] */
} WMDRM_IMPORT_SESSION_KEY;
cpp_quote( "#endif // WMDRM_IMPORT_SESSION_KEY_DEFINED" )
///////////////////////////////////////////////////////////////////////////////
//
// structure to hold the Content Key for Secure Import
//
///////////////////////////////////////////////////////////////////////////////
cpp_quote( "#ifndef WMDRM_IMPORT_CONTENT_KEY_DEFINED" )
cpp_quote( "#define WMDRM_IMPORT_CONTENT_KEY_DEFINED 1")
typedef struct __tagWMDRM_IMPORT_CONTENT_KEY
{
DWORD dwVersion;
DWORD cbStructSize;
DWORD dwIVKeyType;
DWORD cbIVKey;
DWORD dwContentKeyType;
DWORD cbContentKey;
BYTE rgbKeyData[1]; /* [cbIVKey + cbContentKey] */
} WMDRM_IMPORT_CONTENT_KEY;
cpp_quote( "#endif // WMDRM_IMPORT_CONTENT_KEY_DEFINED" )
///////////////////////////////////////////////////////////////////////////////
//
// structure to hold the encrypted Session and Content Keys for Secure Import
//
///////////////////////////////////////////////////////////////////////////////
cpp_quote( "#ifndef WMDRM_IMPORT_INIT_STRUCT_DEFINED" )
cpp_quote( "#define WMDRM_IMPORT_INIT_STRUCT_DEFINED 1")
typedef struct WMDRM_IMPORT_INIT_STRUCT
{
DWORD dwVersion;
DWORD cbEncryptedSessionKeyMessage;
BYTE *pbEncryptedSessionKeyMessage;
DWORD cbEncryptedKeyMessage;
BYTE *pbEncryptedKeyMessage;
} WMDRM_IMPORT_INIT_STRUCT;
cpp_quote( "#endif // WMDRM_IMPORT_INIT_STRUCT_DEFINED" )