' ########################################################################################
' Microsoft Windows
' File: wmdrmsdk.inc
' Copyright (c) 2011 Jos? Roca
' Portions Copyright (c) Microsoft Corporation.
' All Rights Reserved.
' THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
' EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
' MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
' ########################################################################################
' ########################################################################################
' Library name: WMDRMContentEnablerLib
' Version: 1.0, Locale ID = 0
' Library GUID: {82435BE0-F7C1-4DF9-8103-EEABEBF3D6E1}
' ########################################################################################
#IF NOT %DEF(PBX_wmdrmsdk_PBI)
#DEFINE PBX_wmdrmsdk_PBI
%EQUATE `WMDRMSDK_INC = 1
'/* header files for imported files */
#INCLUDE ONCE "Legacy/COM/OAIdl.inc"
#INCLUDE ONCE "Legacy/COM/OCIdl.inc"
#INCLUDE ONCE "Legacy/System/mfobjects.inc"
#INCLUDE ONCE "Legacy/System/mfidl.inc"
#IF NOT %DEF(%WMDRMContentEnablerLib_LIBRARY_DEFINED)
 %WMDRMContentEnablerLib_LIBRARY_DEFINED = 1
' IID LIBID_WMDRMContentEnablerLib;
$LIBID_WMDRMContentEnablerLib = GUID$("{82435BE0-F7C1-4DF9-8103-EEABEBF3D6E1}")
$CLSID_WMDRMContentEnablerActivate = GUID$("{82435BDF-F7C1-4DF9-8103-EEABEBF3D6E1}")
#ENDIF ' /* __WMDRMContentEnablerLib_LIBRARY_DEFINED__ */
$$g_wszWMDRM_ACTIONLIST_TAG = "ACTIONLIST"$$
$$g_wszWMDRM_ACTION_TAG = "ACTION"$$
$$g_wszWMDRM_RIGHT_PLAYBACK = "Play"$$
$$g_wszWMDRM_RIGHT_COPY = "Copy"$$
$$g_wszWMDRM_RIGHT_PLAYLIST_BURN = "PlaylistBurn"$$
$$g_wszWMDRM_RIGHT_CREATE_THUMBNAIL_IMAGE = "CreateThumbnailImage"$$
$$g_wszWMDRM_RIGHT_COPY_TO_CD = "Print.redbook"$$
$$g_wszWMDRM_RIGHT_COPY_TO_SDMI_DEVICE = "Transfer.SDMI"$$
$$g_wszWMDRM_RIGHT_COPY_TO_NON_SDMI_DEVICE = "Transfer.NONSDMI"$$
$$g_wszWMDRM_RIGHT_BACKUP = "Backup"$$
$$g_wszWMDRM_RIGHT_COLLABORATIVE_PLAY = "CollaborativePlay"$$
$$g_wszWMDRM_ActionAllowed = "ActionAllowed."$$
$$g_wszWMDRM_ActionAllowed_Playback = "ActionAllowed.Play"$$
$$g_wszWMDRM_ActionAllowed_Copy = "ActionAllowed.Copy"$$
$$g_wszWMDRM_ActionAllowed_PlaylistBurn = "ActionAllowed.PlaylistBurn"$$
$$g_wszWMDRM_ActionAllowed_CreateThumbnailImage = "ActionAllowed.CreateThumbnailImage"$$
$$g_wszWMDRM_ActionAllowed_CopyToCD = "ActionAllowed.Print.redbook"$$
$$g_wszWMDRM_ActionAllowed_CopyToSDMIDevice = "ActionAllowed.Transfer.SDMI"$$
$$g_wszWMDRM_ActionAllowed_CopyToNonSDMIDevice = "ActionAllowed.Transfer.NONSDMI"$$
$$g_wszWMDRM_ActionAllowed_Backup = "ActionAllowed.Backup"$$
$$g_wszWMDRM_ActionAllowed_CollaborativePlay = "ActionAllowed.CollaborativePlay"$$
$$g_wszWMDRM_LicenseState = "LicenseStateData."$$
$$g_wszWMDRM_LicenseState_Playback = "LicenseStateData.Play"$$
$$g_wszWMDRM_LicenseState_Copy = "LicenseStateData.Copy"$$
$$g_wszWMDRM_LicenseState_PlaylistBurn = "LicenseStateData.PlaylistBurn"$$
$$g_wszWMDRM_LicenseState_CreateThumbnailImage = "LicenseStateData.CreateThumbnailImage"$$
$$g_wszWMDRM_LicenseState_CopyToCD = "LicenseStateData.Print.redbook"$$
$$g_wszWMDRM_LicenseState_CopyToSDMIDevice = "LicenseStateData.Transfer.SDMI"$$
$$g_wszWMDRM_LicenseState_CopyToNonSDMIDevice = "LicenseStateData.Transfer.NONSDMI"$$
$$g_wszWMDRM_LicenseState_Backup = "LicenseStateData.Backup"$$
$$g_wszWMDRM_LicenseState_CollaborativePlay = "LicenseStateData.CollaborativePlay"$$
$$g_wszWMDRMNET_Revocation = "WMDRMNET_REVOCATION"$$
$$g_wszWMDRM_SAPLEVEL = "SAPLEVE"$$
$$g_wszWMDRM_SAPRequired = "SAPRequired"$$
$$g_wszWMDRM_SOURCEID_ = "SOURCEID"$$ ' // Added a "_" because conflicts with g_wszWMDRM_SourceID in wmsdkidl.inc
$$g_wszWMDRM_PRIORITY = "PRIORITY"$$
$$g_wszWMDRM_ISSUEDATE = "ISSUEDATE"$$
$$g_wszWMDRM_UplinkID = "UplinkID"$$
$$g_wszWMDRM_REVINFOVERSION = "REVINFOVERSION"$$
%EQUATE `DRM_LICENSE_STATE_DATA_VAGUE = 1
%EQUATE `DRM_LICENSE_STATE_DATA_OPL_PRESENT = 2
%EQUATE `DRM_LICENSE_STATE_DATA_SAP_PRESENT = 4
%EQUATE `WMDRM_BACKUP_OVERWRITE = &H00000001
%EQUATE `WMDRM_RESTORE_INDIVIDUALIZE = &H00000002
%EQUATE `WMDRM_SECURITY_PERFORM_INDIV = &H00000001
%EQUATE `WMDRM_SECURITY_PERFORM_REVOCATION_REFRESH = &H00000002
%EQUATE `WMDRM_SECURITY_PERFORM_FORCE_INDIV = &H00000004
%EQUATE `WMDRM_LICENSE_TYPE_XML = &H00000001
%EQUATE `WMDRM_LICENSE_TYPE_XMR = &H00000002
%EQUATE `WMDRM_CERTIFICATE_TYPE_V1 = &H00000001
%EQUATE `WMDRM_CERTIFICATE_TYPE_V2 = &H00000002
%EQUATE `WMDRM_ACQUIRE_LICENSE_SILENT = &H00000001
%EQUATE `WMDRM_ACQUIRE_LICENSE_NONSILENT = &H00000002
%EQUATE `WMDRM_ACQUIRE_LICENSE_LEGACY_NONSILENT = &H00000004
%EQUATE `WMDRM_DELETE_LICENSE_IMMEDIATELY = &H00000001
%EQUATE `WMDRM_DELETE_LICENSE_MARK_FOR_PURGE = &H00000002
%EQUATE `WMDRM_CLEAN_LICENSE_STORE_SYNC = &H00000001
%EQUATE `WMDRM_CLEAN_LICENSE_STORE_ASYNC = &H00000002
%EQUATE `WMDRM_CERTIFICATE_TYPE_XML = 1
%EQUATE `WMDRM_PROTECTION_TYPE_RC4 = 1
$WMDRM_REVOCATIONTYPE_APP = GUID$("{90A37313-0ECF-4CAA-A906-B188F6129300}")
$WMDRM_REVOCATIONTYPE_DEVICE = GUID$("{3129E375-CEB0-47D5-9CCA-9DB74CFD4332}")
$WMDRM_REVOCATIONTYPE_CARDEA = GUID$("{CD75E604-543D-4A9C-9F09-FE6D24E8BF90}")
$WMDRM_REVOCATIONTYPE_REVINFO = GUID$("{CCDE5A55-A688-4405-A88B-D13F90D5BA3E}")
$WMDRM_REVOCATIONTYPE_GRL = GUID$("{A2190240-B2CA-40B3-B48D-9BC4C2DC428D}")
$WMDRM_REVOCATIONTYPE_HDCP = GUID$("{E627553A-820F-40FD-B465-A42830A574C9}")
' enum DRM_CRYPTO_TYPE
%EQUATE `CRYPTO_TYPE_MCE = 0
#IF NOT %DEF(%DRM_LICENSE_STATE_TYPES_DEFINED)
%EQUATE `DRM_LICENSE_STATE_TYPES_DEFINED = 1
' enum DRM_LICENSE_STATE_CATEGORY
%EQUATE `WM_DRM_LICENSE_STATE_NORIGHT = 0
%EQUATE `WM_DRM_LICENSE_STATE_UNLIM = %WM_DRM_LICENSE_STATE_NORIGHT + 1
%EQUATE `WM_DRM_LICENSE_STATE_COUNT = %WM_DRM_LICENSE_STATE_UNLIM + 1
%EQUATE `WM_DRM_LICENSE_STATE_FROM = %WM_DRM_LICENSE_STATE_COUNT + 1
%EQUATE `WM_DRM_LICENSE_STATE_UNTIL = %WM_DRM_LICENSE_STATE_FROM + 1
%EQUATE `WM_DRM_LICENSE_STATE_FROM_UNTIL = %WM_DRM_LICENSE_STATE_UNTIL + 1
%EQUATE `WM_DRM_LICENSE_STATE_COUNT_FROM = %WM_DRM_LICENSE_STATE_FROM_UNTIL + 1
%EQUATE `WM_DRM_LICENSE_STATE_COUNT_UNTIL = %WM_DRM_LICENSE_STATE_COUNT_FROM + 1
%EQUATE `WM_DRM_LICENSE_STATE_COUNT_FROM_UNTIL = %WM_DRM_LICENSE_STATE_COUNT_UNTIL + 1
%EQUATE `WM_DRM_LICENSE_STATE_EXPIRATION_AFTER_FIRSTUSE = %WM_DRM_LICENSE_STATE_COUNT_FROM_UNTIL + 1
' // Size = 68 bytes
TYPE DRM_LICENSE_STATE_DATA DWORD FILL
 dwStreamId AS DWORD
 dwCategory AS LONG ' DRM_LICENSE_STATE_CATEGORY
 dwNumCounts AS DWORD
 dwCount(3) AS DWORD
 dwNumDates AS DWORD
 datetime(3) AS FILETIME
 dwVague AS DWORD
END TYPE
#ENDIF
' enum MSDRM_STATUS
%EQUATE `DRM_ERROR = 0
%EQUATE `DRM_INFORMATION = 1
%EQUATE `DRM_BACKUPRESTORE_BEGIN = 2
%EQUATE `DRM_BACKUPRESTORE_END = 3
%EQUATE `DRM_BACKUPRESTORE_CONNECTING = 4
%EQUATE `DRM_BACKUPRESTORE_DISCONNECTING = 5
%EQUATE `DRM_ERROR_WITHURL = 6
%EQUATE `DRM_RESTRICTED_LICENSE = 7
%EQUATE `DRM_NEEDS_INDIVIDUALIZATION = 8
%EQUATE `DRM_PLAY_OPL_NOTIFICATION = 9
%EQUATE `DRM_COPY_OPL_NOTIFICATION = 10
%EQUATE `DRM_REFRESHCRL_COMPLETE = 11
' enum DRM_ATTR_DATATYPE
%EQUATE `DRM_TYPE_DWORD = 0
%EQUATE `DRM_TYPE_STRING = 1
%EQUATE `DRM_TYPE_BINARY = 2
%EQUATE `DRM_TYPE_BOOL = 3
%EQUATE `DRM_TYPE_QWORD = 4
%EQUATE `DRM_TYPE_WORD = 5
%EQUATE `DRM_TYPE_GUID = 6
' enum DRM_HTTP_STATUS
%EQUATE `HTTP_NOTINITIATED = 0
%EQUATE `HTTP_CONNECTING = %HTTP_NOTINITIATED + 1
%EQUATE `HTTP_REQUESTING = %HTTP_CONNECTING + 1
%EQUATE `HTTP_RECEIVING = %HTTP_REQUESTING + 1
%EQUATE `HTTP_COMPLETED = %HTTP_RECEIVING + 1
' enum DRM_INDIVIDUALIZATION_STATUS
%EQUATE `INDI_UNDEFINED = 0
%EQUATE `INDI_BEGIN = &H1
%EQUATE `INDI_SUCCEED = &H2
%EQUATE `INDI_FAIL = &H4
%EQUATE `INDI_CANCEL = &H8
%EQUATE `INDI_DOWNLOAD = &H10
%EQUATE `INDI_INSTALL = &H20
' enum DRM_ACTION_ALLOWED_QUERY_RESULTS
%EQUATE `DRM_ACTION_ALLOWED_QUERY_NOT_ENABLED = &H1
%EQUATE `DRM_ACTION_ALLOWED_QUERY_NOT_ENABLED_NO_LICENSE = &H2
%EQUATE `DRM_ACTION_ALLOWED_QUERY_NOT_ENABLED_NO_RIGHT = &H4
%EQUATE `DRM_ACTION_ALLOWED_QUERY_NOT_ENABLED_EXHAUSTED = &H8
%EQUATE `DRM_ACTION_ALLOWED_QUERY_NOT_ENABLED_EXPIRED = &H10
%EQUATE `DRM_ACTION_ALLOWED_QUERY_NOT_ENABLED_NOT_STARTED = &H20
%EQUATE `DRM_ACTION_ALLOWED_QUERY_NOT_ENABLED_APPSEC_TOO_LOW = &H40
%EQUATE `DRM_ACTION_ALLOWED_QUERY_NOT_ENABLED_REQ_INDIV = &H80
%EQUATE `DRM_ACTION_ALLOWED_QUERY_NOT_ENABLED_COPY_OPL_TOO_LOW = &H100
%EQUATE `DRM_ACTION_ALLOWED_QUERY_NOT_ENABLED_COPY_OPL_EXCLUDED = &H200
%EQUATE `DRM_ACTION_ALLOWED_QUERY_NOT_ENABLED_NO_CLOCK_SUPPORT = &H400
%EQUATE `DRM_ACTION_ALLOWED_QUERY_NOT_ENABLED_NO_METERING_SUPPORT = &H800
%EQUATE `DRM_ACTION_ALLOWED_QUERY_NOT_ENABLED_CHAIN_DEPTH_TOO_HIGH = &H1000
' // Size = 24 bytes
TYPE WMDRMCryptoData QWORD FILL
 cryptoType AS LONG ' DRM_CRYPTO_TYPE enum
 qwCounterID AS QUAD ' unsigned __int64
 qwOffset AS QUAD ' unsigned __int64
END TYPE
' // Size = 28 bytes
TYPE WM_INDIVIDUALIZE_STATUS DWORD FILL
 hr AS LONG
 enIndiStatus AS LONG ' DRM_INDIVIDUALIZATION_STATUS
 pszIndiRespUrl AS ASCIIZ PTR
 dwHTTPRequest AS DWORD
 enHTTPStatus AS LONG ' DRM_HTTP_STATUS
 dwHTTPReadProgress AS DWORD
 dwHTTPReadTotal AS DWORD
END TYPE
MACRO WMIndividualizeStatus = WM_INDIVIDUALIZE_STATUS
' // Size = 8 bytes
TYPE WM_BACKUP_RESTORE_STATUS DWORD FILL
 eStatus AS LONG ' MSDRM_STATUS
 bstrError AS DWORD ' BSTR
END TYPE
MACRO WMBackupRestoreData = WM_BACKUP_RESTORE_STATUS
#IF NOT %DEF(%DRM_OPL_TYPES)
%EQUATE `DRM_OPL_TYPES = 1
%EQUATE `WMDRM_OPL_PLAY = &H00000001
%EQUATE `WMDRM_OPL_COPY = &H00000002
' // Size = 10 bytes
TYPE DRM_MINIMUM_OUTPUT_PROTECTION_LEVELS WORD
 wCompressedDigitalVideo AS WORD ' WORD
 wUncompressedDigitalVideo AS WORD ' WORD
 wAnalogVideo AS WORD ' WORD
 wCompressedDigitalAudio AS WORD ' WORD
 wUncompressedDigitalAudio AS WORD ' WORD
END TYPE
' // Size = 8 bytes
TYPE DRM_OPL_OUTPUT_IDS DWORD FILL
 cIds AS WORD ' WORD
 rgIds AS GUID PTR ' GUID*
END TYPE
%EQUATE `VER_DRM_PLAY_OPL_V1 = 1
%EQUATE `VER_DRM_PLAY_OPL = 2
%EQUATE `VER_DRM_VIDEO_OUTPUT_PROTECTION = 2
' // Size = 20 bytes
TYPE DRM_OUTPUT_PROTECTION DWORD
 guidId AS GUID
 bConfigData AS BYTE
END TYPE
' // Size = 24 bytes
TYPE DRM_OUTPUT_PROTECTION_EX DWORD
 dwVersion AS DWORD
 guidId AS GUID
 dwConfigData AS DWORD
END TYPE
MACRO DRM_AUDIO_OUTPUT_PROTECTION = DRM_OUTPUT_PROTECTION
MACRO DRM_VIDEO_OUTPUT_PROTECTION = DRM_OUTPUT_PROTECTION
MACRO DRM_AUDIO_OUTPUT_PROTECTION_EX = DRM_OUTPUT_PROTECTION_EX
MACRO DRM_VIDEO_OUTPUT_PROTECTION_EX = DRM_OUTPUT_PROTECTION_EX
' // Size = 8 bytes
TYPE DRM_VIDEO_OUTPUT_PROTECTION_IDS DWORD FILL
 cEntries AS WORD
 rgVop AS DRM_VIDEO_OUTPUT_PROTECTION PTR ' DRM_VIDEO_OUTPUT_PROTECTION*
END TYPE
' // Size = 12 bytes
TYPE DRM_VIDEO_OUTPUT_PROTECTION_IDS_EX DWORD FILL
 dwVersion AS DWORD
 cEntries AS WORD ' WORD
 rgVop AS DRM_VIDEO_OUTPUT_PROTECTION_EX PTR ' DRM_VIDEO_OUTPUT_PROTECTION_EX*
END TYPE
' // Size = 8 bytes
TYPE DRM_AUDIO_OUTPUT_PROTECTION_IDS DWORD FILL
 cEntries AS WORD ' WORD
 rgAop AS DRM_AUDIO_OUTPUT_PROTECTION PTR ' DRM_AUDIO_OUTPUT_PROTECTION*
END TYPE
' // Size = 12 bytes
TYPE DRM_AUDIO_OUTPUT_PROTECTION_IDS_EX DWORD FILL
 dwVersion AS DWORD
 cEntries AS WORD ' WORD
 rgAop AS DRM_AUDIO_OUTPUT_PROTECTION_EX PTR ' DRM_AUDIO_OUTPUT_PROTECTION_EX*
END TYPE
' // Size = 28 bytes
TYPE DRM_PLAY_OPL DWORD FILL
 minOPL AS DRM_MINIMUM_OUTPUT_PROTECTION_LEVELS
 oplIdReserved AS DRM_OPL_OUTPUT_IDS
 vopi AS DRM_VIDEO_OUTPUT_PROTECTION_IDS
END TYPE
' // Size = 36 bytes
TYPE DRM_PLAY_OPL_EX DWORD FILL
 dwVersion AS DWORD
 minOPL AS DRM_MINIMUM_OUTPUT_PROTECTION_LEVELS
 oplIdReserved AS DRM_OPL_OUTPUT_IDS
 vopi AS DRM_VIDEO_OUTPUT_PROTECTION_IDS_EX
END TYPE
' // Size = 20 bytes
TYPE DRM_COPY_OPL DWORD FILL
 wMinimumCopyLevel AS WORD ' WORD
 oplIdIncludes AS DRM_OPL_OUTPUT_IDS
 oplIdExcludes AS DRM_OPL_OUTPUT_IDS
END TYPE
#ENDIF ' // DRM_OPL_TYPES
' // Size = 12 bytes
TYPE WMDRM_OUTPUT_PROTECTION_LEVELS WORD
 wCompressedDigitalVideo AS WORD ' WORD
 wUncompressedDigitalVideo AS WORD ' WORD
 wAnalogVideo AS WORD ' WORD
 wCompressedDigitalAudio AS WORD ' WORD
 wUncompressedDigitalAudio AS WORD ' WORD
 wMinimumCopyProtectionLevel AS WORD ' WORD
END TYPE
MACRO WMDRMOutputProtectionLevels = WMDRM_OUTPUT_PROTECTION_LEVELS
' // Size = 20 bytes
TYPE WMDRM_ANALOG_VIDEO_RESTRICTIONS DWORD
 guidRestrictionID AS GUID ' GUID
 dwRestrictionData AS DWORD
END TYPE
MACRO WMDRMAnalogVideoRestrictions = WMDRM_ANALOG_VIDEO_RESTRICTIONS
' // Size = 28 bytes
TYPE WMDRM_ANALOG_VIDEO_RESTRICTIONS_EX DWORD
 dwVersion AS DWORD
 guidRestrictionID AS GUID ' GUID
 cbRestrictionData AS DWORD
 pbRestrictionData AS BYTE PTR ' BYTE*
END TYPE
MACRO WMDRMAnalogVideoRestrictionsEx = WMDRM_ANALOG_VIDEO_RESTRICTIONS_EX
' enum WMDRMNET_POLICY_TYPE
%EQUATE `WMDRMNET_POLICY_TYPE_UNDEFINED = 0
%EQUATE `WMDRMNET_POLICY_TYPE_TRANSCRYPTPLAY = &H1
' // Size = 8 bytes
TYPE WMDRMNET_POLICY DWORD
 ePolicyType AS LONG ' WMDRMNET_POLICY_TYPE
 pbPolicy AS BYTE PTR ' BYTE *
END TYPE
' // Size = 8 bytes
TYPE WMDRMNET_POLICY_TRANSCRYPTPLAY DWORD
 cbData AS DWORD
 pbData AS BYTE PTR ' BYTE*
END TYPE
' // Size = 16 bytes
TYPE WMDRM_ENCRYPT_SCATTER_INFO DWORD
 dwStreamID AS DWORD
 dwSampleProtectionVersion AS DWORD
 cbProtectionInfo AS DWORD
 pbProtectionInfo AS BYTE PTR ' BYTE*
END TYPE
' // Size = 12 bytes
TYPE WMDRM_ENCRYPT_SCATTER_BLOCK DWORD
 dwStreamID AS DWORD
 cbBlock AS DWORD
 pbBlock AS BYTE PTR ' BYTE*
END TYPE
DECLARE FUNCTION WMDRMStartup LIB "wmdrmsdk.dll" ALIAS "WMDRMStartup" () AS LONG
DECLARE FUNCTION WMDRMShutdown LIB "wmdrmsdk.dll" ALIAS "WMDRMShutdown" () AS LONG
DECLARE FUNCTION WMDRMCreateProvider LIB "wmdrmsdk.dll" ALIAS "WMDRMCreateProvider" ( BYREF ppDRMProvider AS IWMDRMProvider ) AS LONG
'//
'// WMDRMCreateProtectedProvider is only available via a Microsoft issued WMDRMSDK stub library
'//
DECLARE FUNCTION WMDRMCreateProtectedProvider LIB "wmdrmsdk.dll" ALIAS "WMDRMCreateProtectedProvider" ( BYREF ppDRMProvider AS IWMDRMProvider ) AS LONG
' ########################################################################################
' Interface name = IDRMStatusCallback
' IID = 08548704-75B1-4982-9B26-FB385DEE741D
' Inherited interface = IUnknown
' ########################################################################################
#IF NOT %DEF(%IDRMStatusCallback_INTERFACE_DEFINED)
 %IDRMStatusCallback_INTERFACE_DEFINED = 1
$IID_IDRMStatusCallback = GUID$("{08548704-75B1-4982-9B26-FB385DEE741D}")
INTERFACE IDRMStatusCallback $IID_IDRMStatusCallback
 INHERIT IUnknown
 ' =====================================================================================
 METHOD OnStatus ( ' VTable offset = 12
 BYVAL Status AS LONG
 , BYVAL hr AS LONG
 , BYVAL dwType AS LONG
 , BYVAL pValue AS BYTE PTR
 , BYVAL pvContext AS DWORD
 ) AS LONG
 ' =====================================================================================
END INTERFACE
#ENDIF ' /* __IDRMStatusCallback_INTERFACE_DEFINED__ */
' ########################################################################################
' Interface name = IWMDRMEventGenerator
' IID = CE11CC91-E615-4E0B-BE1F-09B5AEC033F2
' Inherited interface = IMFMediaEventGenerator
' ########################################################################################
#IF NOT %DEF(%IWMDRMEventGenerator_INTERFACE_DEFINED)
 %IWMDRMEventGenerator_INTERFACE_DEFINED = 1
$IID_IWMDRMEventGenerator = GUID$("{CE11CC91-E615-4E0B-BE1F-09B5AEC033F2}")
INTERFACE IWMDRMEventGenerator $IID_IWMDRMEventGenerator
 INHERIT IUnknown
 ' =====================================================================================
 ' IMFMediaEventGenerator methods
 ' =====================================================================================
 METHOD GetEvent ( ' VTable offset = 12
 BYVAL dwFlags AS DWORD
 , BYREF ppEvent AS IMFMediaEvent
 ) AS LONG
 ' =====================================================================================
 METHOD BeginGetEvent ( ' VTable offset = 16
 BYVAL pCallback AS IMFAsyncCallback
 , BYVAL punkState AS IUnknown
 ) AS LONG
 ' =====================================================================================
 METHOD EndGetEvent ( ' VTable offset = 20
 BYVAL pResult AS IMFAsyncResult
 , BYREF ppEvent AS IMFMediaEvent
 ) AS LONG
 ' =====================================================================================
 METHOD QueueEvent ( ' VTable offset = 24
 BYVAL met AS DWORD
 , BYREF guidExtendedType AS GUID
 , BYVAL hrStatus AS LONG
 , BYREF pvValue AS PROPVARIANT
 ) AS LONG
 ' =====================================================================================
 ' =====================================================================================
 ' IWMDRMEventGenerator methods
 ' =====================================================================================
 METHOD CancelAsyncOperation ( ' VTable offset = 28
 BYVAL punkCancelationCookie AS IUnknown
 ) AS LONG
 ' =====================================================================================
 METHOD Shutdown ( ' VTable offset = 32
 ) AS LONG
 ' =====================================================================================
END INTERFACE
#ENDIF ' /* __IWMDRMEventGenerator_INTERFACE_DEFINED__ */
' ########################################################################################
' Interface name = IWMDRMProvider
' IID = 98DC8917-8640-4B1D-9F1E-A590D40357EE
' Inherited interface = IUnknown
' ########################################################################################
#IF NOT %DEF(%IWMDRMProvider_INTERFACE_DEFINED)
 %IWMDRMProvider_INTERFACE_DEFINED = 1
$IID_IWMDRMProvider = GUID$("{98DC8917-8640-4B1D-9F1E-A590D40357EE}")
INTERFACE IWMDRMProvider $IID_IWMDRMProvider
 INHERIT IUnknown
 ' =====================================================================================
 METHOD CreateObject ( ' VTable offset = 12
 BYREF riid AS GUID
 , BYREF ppvObject AS IUnknown
 ) AS LONG
 ' =====================================================================================
END INTERFACE
#ENDIF ' /* __IWMDRMProvider_INTERFACE_DEFINED__ */
' ########################################################################################
' Interface name = IWMDRMSecurity
' IID = 70800F56-5239-4A0B-A8B8-D53C6BAE4171
' Inherited interface = IWMDRMEventGenerator
' ########################################################################################
#IF NOT %DEF(%IWMDRMSecurity_INTERFACE_DEFINED)
 %IWMDRMSecurity_INTERFACE_DEFINED = 1
$IID_IWMDRMSecurity = GUID$("{70800F56-5239-4A0B-A8B8-D53C6BAE4171}")
INTERFACE IWMDRMSecurity $IID_IWMDRMSecurity
 INHERIT IUnknown
 ' =====================================================================================
 ' IMFMediaEventGenerator methods
 ' =====================================================================================
 METHOD GetEvent ( ' VTable offset = 12
 BYVAL dwFlags AS DWORD
 , BYREF ppEvent AS IMFMediaEvent
 ) AS LONG
 ' =====================================================================================
 METHOD BeginGetEvent ( ' VTable offset = 16
 BYVAL pCallback AS IMFAsyncCallback
 , BYVAL punkState AS IUnknown
 ) AS LONG
 ' =====================================================================================
 METHOD EndGetEvent ( ' VTable offset = 20
 BYVAL pResult AS IMFAsyncResult
 , BYREF ppEvent AS IMFMediaEvent
 ) AS LONG
 ' =====================================================================================
 METHOD QueueEvent ( ' VTable offset = 24
 BYVAL met AS DWORD
 , BYREF guidExtendedType AS GUID
 , BYVAL hrStatus AS LONG
 , BYREF pvValue AS PROPVARIANT
 ) AS LONG
 ' =====================================================================================
 ' =====================================================================================
 ' IWMDRMEventGenerator methods
 ' =====================================================================================
 METHOD CancelAsyncOperation ( ' VTable offset = 28
 BYVAL punkCancelationCookie AS IUnknown
 ) AS LONG
 ' =====================================================================================
 METHOD Shutdown ( ' VTable offset = 32
 ) AS LONG
 ' =====================================================================================
 ' =====================================================================================
 ' IWMDRMSecurity methods
 ' =====================================================================================
 METHOD GetSecurityVersion ( ' VTable offset = 36
 BYREF pbstrVersion AS WSTRING
 ) AS LONG
 ' =====================================================================================
 METHOD GetMachineCertificate ( ' VTable offset = 40
 BYVAL dwCertificateType AS DWORD
 , BYREF rgbVersion AS BYTE
 , BYREF ppbCertificate AS DWORD
 , BYREF pcbCertificate AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD PerformSecurityUpdate ( ' VTable offset = 44
 BYVAL dwFlags AS DWORD
 , BYREF ppunkCancelationCookie AS IUnknown
 ) AS LONG
 ' =====================================================================================
 METHOD SetRevocationData ( ' VTable offset = 48
 BYREF guidRevocationType AS GUID
 , BYVAL pbCRL AS BYTE PTR
 , BYVAL cbCRL AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetRevocationData ( ' VTable offset = 52
 BYREF guidRevocationType AS GUID
 , BYVAL pbCRL AS BYTE PTR
 , BYREF pcbCRL AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetRevocationDataVersion ( ' VTable offset = 56
 BYREF guidRevocationType AS GUID
 , BYREF pdwCRLVersion AS QUAD
 ) AS LONG
 ' =====================================================================================
 METHOD CheckCertForRevocation ( ' VTable offset = 60
 BYREF rguidRevocationList AS GUID
 , BYVAL pbCert AS BYTE PTR
 , BYVAL cbCert AS DWORD
 , BYREF pfRevoked AS LONG
 ) AS LONG
 ' =====================================================================================
 METHOD GetContentEnablersForRevocations ( ' VTable offset = 64
 BYVAL rgpbCerts AS DWORD
 , BYREF rgpdwCertSizes AS DWORD
 , BYREF rgpguidCerts AS GUID
 , BYVAL cCerts AS DWORD
 , BYVAL hResultHint AS LONG
 , BYREF prgContentEnablers AS IMFContentEnabler
 , BYREF pcContentEnablers AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetContentEnablersFromHashes ( ' VTable offset = 68
 BYVAL rgpbCertHashes AS WSTRING
 , BYVAL cCerts AS DWORD
 , BYVAL hResultHint AS LONG
 , BYREF prgContentEnablers AS IMFContentEnabler
 , BYREF pcContentEnablers AS DWORD
 ) AS LONG
 ' =====================================================================================
END INTERFACE
#ENDIF ' /* __IWMDRMSecurity_INTERFACE_DEFINED__ */
' ########################################################################################
' Interface name = IWMDRMEncrypt
' IID = C9E0A5F4-DD22-4DC4-B795-88FA91F0516B
' Inherited interface = IUnknown
' ########################################################################################
#IF NOT %DEF(%IWMDRMEncrypt_INTERFACE_DEFINED)
 %IWMDRMEncrypt_INTERFACE_DEFINED = 1
$IID_IWMDRMEncrypt = GUID$("{C9E0A5F4-DD22-4DC4-B795-88FA91F0516B}")
INTERFACE IWMDRMEncrypt $IID_IWMDRMEncrypt
 INHERIT IUnknown
 ' =====================================================================================
 METHOD Encrypt ( ' VTable offset = 12
 BYVAL pbData AS BYTE PTR
 , BYVAL cbData AS DWORD
 , BYREF pWMCryptoData AS WMDRMCryptoData
 ) AS LONG
 ' =====================================================================================
END INTERFACE
#ENDIF ' /* __IWMDRMEncrypt_INTERFACE_DEFINED__ */
' ########################################################################################
' Interface name = IWMDRMEncryptScatter
' IID = 2662FA39-4C62-481A-956C-7BFCB33C2888
' Inherited interface = IUnknown
' ########################################################################################
#IF NOT %DEF(%IWMDRMEncryptScatter_INTERFACE_DEFINED)
 %IWMDRMEncryptScatter_INTERFACE_DEFINED = 1
$IID_IWMDRMEncryptScatter = GUID$("{2662FA39-4C62-481A-956C-7BFCB33C2888}")
INTERFACE IWMDRMEncryptScatter $IID_IWMDRMEncryptScatter
 INHERIT IUnknown
 ' =====================================================================================
 METHOD InitEncryptScatter ( ' VTable offset = 12
 BYVAL cStreams AS DWORD
 , BYREF rgInfos AS WMDRM_ENCRYPT_SCATTER_INFO
 ) AS LONG
 ' =====================================================================================
 METHOD EncryptScatter ( ' VTable offset = 16
 BYVAL cBlocks AS DWORD
 , BYREF rgBlocks AS WMDRM_ENCRYPT_SCATTER_BLOCK
 , BYREF pWMCryptoData AS WMDRMCryptoData
 , BYVAL cbOutput AS DWORD
 , BYVAL pbOutput AS BYTE PTR
 ) AS LONG
 ' =====================================================================================
END INTERFACE
#ENDIF ' /* __IWMDRMEncryptScatter_INTERFACE_DEFINED__ */
' ########################################################################################
' Interface name = IWMDRMDecrypt
' IID = C9E0A5F5-DD22-4DC4-B795-88FA91F0516B
' Inherited interface = IUnknown
' ########################################################################################
#IF NOT %DEF(%IWMDRMDecrypt_INTERFACE_DEFINED)
 %IWMDRMDecrypt_INTERFACE_DEFINED = 1
$IID_IWMDRMDecrypt = GUID$("{C9E0A5F5-DD22-4DC4-B795-88FA91F0516B}")
INTERFACE IWMDRMDecrypt $IID_IWMDRMDecrypt
 INHERIT IUnknown
 ' =====================================================================================
 METHOD Decrypt ( ' VTable offset = 12
 BYVAL pbData AS BYTE PTR
 , BYVAL cbData AS DWORD
 , BYREF pWMCryptoData AS WMDRMCryptoData
 ) AS LONG
 ' =====================================================================================
END INTERFACE
#ENDIF ' /* __IWMDRMDecrypt_INTERFACE_DEFINED__ */
' ########################################################################################
' Interface name = IWMDRMLicense
' IID = C9E0A5F3-DD22-4DC4-B795-88FA91F0516B
' Inherited interface = IUnknown
' ########################################################################################
#IF NOT %DEF(%IWMDRMLicense_INTERFACE_DEFINED)
 %IWMDRMLicense_INTERFACE_DEFINED = 1
$IID_IWMDRMLicense = GUID$("{C9E0A5F3-DD22-4DC4-B795-88FA91F0516B}")
INTERFACE IWMDRMLicense $IID_IWMDRMLicense
 INHERIT IUnknown
 ' =====================================================================================
 METHOD ResetEnumeration ( ' VTable offset = 12
 ) AS LONG
 ' =====================================================================================
 METHOD GetNext ( ' VTable offset = 16
 ) AS LONG
 ' =====================================================================================
 METHOD GetLicense ( ' VTable offset = 20
 BYREF ppbLicense AS DWORD
 , BYREF pcbLicense AS DWORD
 , BYREF pdwLicenseType AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetLicenseProperty ( ' VTable offset = 24
 BYVAL bstrName AS WSTRING
 , BYREF ppropVariant AS PROPVARIANT
 ) AS LONG
 ' =====================================================================================
 METHOD CreateDecryptor ( ' VTable offset = 28
 BYREF ppDecryptor AS IWMDRMDecrypt
 ) AS LONG
 ' =====================================================================================
 METHOD CreateSecureDecryptor ( ' VTable offset = 32
 BYVAL pbCertificate AS BYTE PTR
 , BYVAL cbCertificate AS DWORD
 , BYVAL dwCertificateType AS DWORD
 , BYVAL dwFlags AS DWORD
 , BYREF pbInitializationVector AS BYTE
 , BYREF pcbInitializationVector AS DWORD
 , BYREF ppDecryptor AS IWMDRMDecrypt
 ) AS LONG
 ' =====================================================================================
 METHOD CreateEncryptor ( ' VTable offset = 36
 BYREF ppEncryptor AS IWMDRMEncrypt
 ) AS LONG
 ' =====================================================================================
 METHOD PersistLicense ( ' VTable offset = 40
 ) AS LONG
 ' =====================================================================================
 METHOD CanPersist ( ' VTable offset = 44
 BYREF pfCanPersist AS LONG
 ) AS LONG
 ' =====================================================================================
 METHOD GetAnalogVideoRestrictionLevels ( ' VTable offset = 48
 BYREF rgAnalogVideoRestrictions AS WMDRM_ANALOG_VIDEO_RESTRICTIONS
 , BYREF pcRestrictions AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetOutputProtectionLevels ( ' VTable offset = 52
 BYREF pOPLs AS WMDRM_OUTPUT_PROTECTION_LEVELS
 ) AS LONG
 ' =====================================================================================
 METHOD GetInclusionList ( ' VTable offset = 56
 BYREF ppGuids AS GUID
 , BYREF pcGuids AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetPolicy ( ' VTable offset = 60
 BYREF ppbPolicy AS DWORD
 , BYREF pcbPolicy AS DWORD
 ) AS LONG
 ' =====================================================================================
END INTERFACE
#ENDIF ' /* __IWMDRMLicense_INTERFACE_DEFINED__ */
' ########################################################################################
' Interface name = IWMDRMLicenseQuery
' IID = 20B970DF-0A58-4D3C-817C-4E3CCBB253AC
' Inherited interface = IUnknown
' ########################################################################################
#IF NOT %DEF(%IWMDRMLicenseQuery_INTERFACE_DEFINED)
 %IWMDRMLicenseQuery_INTERFACE_DEFINED = 1
$IID_IWMDRMLicenseQuery = GUID$("{20B970DF-0A58-4D3C-817C-4E3CCBB253AC}")
INTERFACE IWMDRMLicenseQuery $IID_IWMDRMLicenseQuery
 INHERIT IUnknown
 ' =====================================================================================
 METHOD QueryLicenseState ( ' VTable offset = 12
 BYVAL bstrKID AS WSTRING
 , BYVAL cActionsToQuery AS DWORD
 , BYREF rgbstrActionsToQuery AS WSTRING
 , BYREF rgResultStateData AS DRM_LICENSE_STATE_DATA
 ) AS LONG
 ' =====================================================================================
 METHOD SetActionAllowedQueryParams ( ' VTable offset = 16
 BYVAL fIsMF AS LONG
 , BYVAL dwAppSecLevel AS DWORD
 , BYVAL fHasSerialNumber AS LONG
 , BYVAL bstrDeviceCert AS WSTRING
 ) AS LONG
 ' =====================================================================================
 METHOD QueryActionAllowed ( ' VTable offset = 20
 BYVAL bstrKID AS WSTRING
 , BYVAL bstrMinReqIndivVersion AS WSTRING
 , BYVAL cActionsToQuery AS DWORD
 , BYREF rgbstrActionsToQuery AS WSTRING
 , BYREF rgdwQueryResult AS DWORD
 ) AS LONG
 ' =====================================================================================
END INTERFACE
#ENDIF ' /* __IWMDRMLicenseQuery_INTERFACE_DEFINED__ */
' // Size = 16 bytes
TYPE WMDRM_LICENSE_FILTER DWORD
 dwVersion AS DWORD
 bstrKID AS DWORD ' BSTR
 bstrRights AS DWORD ' BSTR
 bstrAllowedSourceIDs AS DWORD ' BSTR
END TYPE
' ########################################################################################
' Interface name = IWMDRMLicenseManagement
' IID = F4828DC7-8945-4D05-AB05-667AB99D29EE
' Inherited interface = IWMDRMEventGenerator
' ########################################################################################
#IF NOT %DEF(%IWMDRMLicenseManagement_INTERFACE_DEFINED)
 %IWMDRMLicenseManagement_INTERFACE_DEFINED = 1
$IID_IWMDRMLicenseManagement = GUID$("{F4828DC7-8945-4D05-AB05-667AB99D29EE}")
INTERFACE IWMDRMLicenseManagement $IID_IWMDRMLicenseManagement
 INHERIT IUnknown
 ' =====================================================================================
 ' IMFMediaEventGenerator methods
 ' =====================================================================================
 METHOD GetEvent ( ' VTable offset = 12
 BYVAL dwFlags AS DWORD
 , BYREF ppEvent AS IMFMediaEvent
 ) AS LONG
 ' =====================================================================================
 METHOD BeginGetEvent ( ' VTable offset = 16
 BYVAL pCallback AS IMFAsyncCallback
 , BYVAL punkState AS IUnknown
 ) AS LONG
 ' =====================================================================================
 METHOD EndGetEvent ( ' VTable offset = 20
 BYVAL pResult AS IMFAsyncResult
 , BYREF ppEvent AS IMFMediaEvent
 ) AS LONG
 ' =====================================================================================
 METHOD QueueEvent ( ' VTable offset = 24
 BYVAL met AS DWORD
 , BYREF guidExtendedType AS GUID
 , BYVAL hrStatus AS LONG
 , BYREF pvValue AS PROPVARIANT
 ) AS LONG
 ' =====================================================================================
 ' =====================================================================================
 ' IWMDRMEventGenerator methods
 ' =====================================================================================
 METHOD CancelAsyncOperation ( ' VTable offset = 28
 BYVAL punkCancelationCookie AS IUnknown
 ) AS LONG
 ' =====================================================================================
 METHOD Shutdown ( ' VTable offset = 32
 ) AS LONG
 ' =====================================================================================
 ' =====================================================================================
 ' IWMDRMLicenseManagement methods
 ' =====================================================================================
 METHOD CreateLicenseEnumeration ( ' VTable offset = 36
 BYREF pLicenseFilter AS WMDRM_LICENSE_FILTER
 , BYREF pEnumerator AS IWMDRMLicense
 ) AS LONG
 ' =====================================================================================
 METHOD DeleteLicense ( ' VTable offset = 40
 BYVAL bstrKID AS WSTRING
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD CleanLicenseStore ( ' VTable offset = 44
 BYVAL dwFlags AS DWORD
 , BYREF ppunkCancelationCookie AS IUnknown
 ) AS LONG
 ' =====================================================================================
 METHOD StoreLicense ( ' VTable offset = 48
 BYVAL bstrLicenseResponse AS WSTRING
 ) AS LONG
 ' =====================================================================================
 METHOD AcquireLicense ( ' VTable offset = 52
 BYVAL bstrURL AS WSTRING
 , BYVAL bstrHeaderData AS WSTRING
 , BYVAL bstrActions AS WSTRING
 , BYVAL dwFlags AS DWORD
 , BYREF ppunkCancelationCookie AS IUnknown
 ) AS LONG
 ' =====================================================================================
 METHOD MonitorLicenseAcquisition ( ' VTable offset = 56
 BYVAL bstrKID AS WSTRING
 , BYVAL bstrHeader AS WSTRING
 , BYVAL bstrActions AS WSTRING
 , BYREF ppunkCancelationCookie AS IUnknown
 ) AS LONG
 ' =====================================================================================
 METHOD BackupLicenses ( ' VTable offset = 60
 BYVAL bstrBackupDirectory AS WSTRING
 , BYVAL dwFlags AS DWORD
 , BYREF ppunkCancelationCookie AS IUnknown
 ) AS LONG
 ' =====================================================================================
 METHOD RestoreLicenses ( ' VTable offset = 64
 BYVAL bstrBackupDirectory AS WSTRING
 , BYVAL dwFlags AS DWORD
 , BYREF ppunkCancelationCookie AS IUnknown
 ) AS LONG
 ' =====================================================================================
 METHOD CreateLicenseRevocationChallenge ( ' VTable offset = 68
 BYVAL pbMachineID AS BYTE PTR
 , BYVAL cbMachineID AS DWORD
 , BYVAL pbChallenge AS BYTE PTR
 , BYVAL cbChallenge AS DWORD
 , BYREF ppbChallengeOutput AS DWORD
 , BYREF pcbChallengeOutput AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD ProcessLicenseRevocationResponse ( ' VTable offset = 72
 BYVAL pbSignedLRB AS BYTE PTR
 , BYVAL cbSignedLRB AS DWORD
 , BYREF ppbSignedACK AS DWORD
 , BYREF pcbSignedACK AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD ProcessLicenseDeletionMessage ( ' VTable offset = 76
 BYVAL bstrDeletionMessage AS WSTRING
 ) AS LONG
 ' =====================================================================================
END INTERFACE
#ENDIF ' /* __IWMDRMLicenseManagement_INTERFACE_DEFINED__ */
' ########################################################################################
' Interface name = IWMDRMNetReceiver
' IID = F9C074A4-15D6-44C0-8A6D-2446ACC109AE
' Inherited interface = IWMDRMEventGenerator
' ########################################################################################
#IF NOT %DEF(%IWMDRMNetReceiver_INTERFACE_DEFINED)
 %IWMDRMNetReceiver_INTERFACE_DEFINED = 1
$IID_IWMDRMNetReceiver = GUID$("{F9C074A4-15D6-44C0-8A6D-2446ACC109AE}")
INTERFACE IWMDRMNetReceiver $IID_IWMDRMNetReceiver
 INHERIT IUnknown
 ' =====================================================================================
 ' IMFMediaEventGenerator methods
 ' =====================================================================================
 METHOD GetEvent ( ' VTable offset = 12
 BYVAL dwFlags AS DWORD
 , BYREF ppEvent AS IMFMediaEvent
 ) AS LONG
 ' =====================================================================================
 METHOD BeginGetEvent ( ' VTable offset = 16
 BYVAL pCallback AS IMFAsyncCallback
 , BYVAL punkState AS IUnknown
 ) AS LONG
 ' =====================================================================================
 METHOD EndGetEvent ( ' VTable offset = 20
 BYVAL pResult AS IMFAsyncResult
 , BYREF ppEvent AS IMFMediaEvent
 ) AS LONG
 ' =====================================================================================
 METHOD QueueEvent ( ' VTable offset = 24
 BYVAL met AS DWORD
 , BYREF guidExtendedType AS GUID
 , BYVAL hrStatus AS LONG
 , BYREF pvValue AS PROPVARIANT
 ) AS LONG
 ' =====================================================================================
 ' =====================================================================================
 ' IWMDRMEventGenerator methods
 ' =====================================================================================
 METHOD CancelAsyncOperation ( ' VTable offset = 28
 BYVAL punkCancelationCookie AS IUnknown
 ) AS LONG
 ' =====================================================================================
 METHOD Shutdown ( ' VTable offset = 32
 ) AS LONG
 ' =====================================================================================
 ' =====================================================================================
 ' IWMDRMNetReceiver methods
 ' =====================================================================================
 METHOD GetRegistrationChallenge ( ' VTable offset = 36
 BYREF ppbRegistrationChallenge AS DWORD
 , BYREF pcbRegistrationChallenge AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD ProcessRegistrationResponse ( ' VTable offset = 40
 BYVAL pbRegistrationResponse AS BYTE PTR
 , BYVAL cbRegistrationResponse AS DWORD
 , BYREF ppunkCancellationCookie AS IUnknown
 ) AS LONG
 ' =====================================================================================
 METHOD GetLicenseChallenge ( ' VTable offset = 44
 BYVAL bstrAction AS WSTRING
 , BYREF ppbLicenseChallenge AS DWORD
 , BYREF pcbLicenseChallenge AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD ProcessLicenseResponse ( ' VTable offset = 48
 BYVAL pbLicenseResponse AS BYTE PTR
 , BYVAL cbLicenseResponse AS DWORD
 , BYREF ppbWMDRMNetLicenseRepresentation AS DWORD
 , BYREF pcbWMDRMNetLicenseRepresentation AS DWORD
 ) AS LONG
 ' =====================================================================================
END INTERFACE
#ENDIF ' /* __IWMDRMNetReceiver_INTERFACE_DEFINED__ */
' ########################################################################################
' Interface name = IWMDRMNetReceiver2
' IID = 7B97237F-4B5D-442D-86C7-4F88961AF76B
' Inherited interface = IWMDRMNetReceiver
' ########################################################################################
#IF NOT %DEF(%IWMDRMNetReceiver2_INTERFACE_DEFINED)
 %IWMDRMNetReceiver2_INTERFACE_DEFINED = 1
$IID_IWMDRMNetReceiver2 = GUID$("{7B97237F-4B5D-442D-86C7-4F88961AF76B}")
INTERFACE IWMDRMNetReceiver2 $IID_IWMDRMNetReceiver2
 INHERIT IUnknown
 ' =====================================================================================
 ' IMFMediaEventGenerator methods
 ' =====================================================================================
 METHOD GetEvent ( ' VTable offset = 12
 BYVAL dwFlags AS DWORD
 , BYREF ppEvent AS IMFMediaEvent
 ) AS LONG
 ' =====================================================================================
 METHOD BeginGetEvent ( ' VTable offset = 16
 BYVAL pCallback AS IMFAsyncCallback
 , BYVAL punkState AS IUnknown
 ) AS LONG
 ' =====================================================================================
 METHOD EndGetEvent ( ' VTable offset = 20
 BYVAL pResult AS IMFAsyncResult
 , BYREF ppEvent AS IMFMediaEvent
 ) AS LONG
 ' =====================================================================================
 METHOD QueueEvent ( ' VTable offset = 24
 BYVAL met AS DWORD
 , BYREF guidExtendedType AS GUID
 , BYVAL hrStatus AS LONG
 , BYREF pvValue AS PROPVARIANT
 ) AS LONG
 ' =====================================================================================
 ' =====================================================================================
 ' IWMDRMEventGenerator methods
 ' =====================================================================================
 METHOD CancelAsyncOperation ( ' VTable offset = 28
 BYVAL punkCancelationCookie AS IUnknown
 ) AS LONG
 ' =====================================================================================
 METHOD Shutdown ( ' VTable offset = 32
 ) AS LONG
 ' =====================================================================================
 ' =====================================================================================
 ' IWMDRMNetReceiver methods
 ' =====================================================================================
 METHOD GetRegistrationChallenge ( ' VTable offset = 36
 BYREF ppbRegistrationChallenge AS DWORD
 , BYREF pcbRegistrationChallenge AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD ProcessRegistrationResponse ( ' VTable offset = 40
 BYVAL pbRegistrationResponse AS BYTE PTR
 , BYVAL cbRegistrationResponse AS DWORD
 , BYREF ppunkCancellationCookie AS IUnknown
 ) AS LONG
 ' =====================================================================================
 METHOD GetLicenseChallenge ( ' VTable offset = 44
 BYVAL bstrAction AS WSTRING
 , BYREF ppbLicenseChallenge AS DWORD
 , BYREF pcbLicenseChallenge AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD ProcessLicenseResponse ( ' VTable offset = 48
 BYVAL pbLicenseResponse AS BYTE PTR
 , BYVAL cbLicenseResponse AS DWORD
 , BYREF ppbWMDRMNetLicenseRepresentation AS DWORD
 , BYREF pcbWMDRMNetLicenseRepresentation AS DWORD
 ) AS LONG
 ' =====================================================================================
 ' =====================================================================================
 ' IWMDRMNetReceiver2 methods
 ' =====================================================================================
 METHOD ProcessRegistrationResponseEx ( ' VTable offset = 52
 BYVAL pbRegistrationResponse AS BYTE
 , BYVAL cbRegistrationResponse AS DWORD
 , BYVAL dwLocalIPv6ScopeID AS DWORD
 , BYREF ppunkCancellationCookie AS IUnknown
 ) AS LONG
 ' =====================================================================================
 METHOD ProcessLicenseUpdate ( ' VTable offset = 56
 BYVAL pbLicenseUpdate AS BYTE
 , BYVAL cbLicenseUpdate AS DWORD
 , BYREF ppLicense AS IWMDRMLicense
 ) AS LONG
 ' =====================================================================================
END INTERFACE
#ENDIF ' /* __IWMDRMNetReceiver2_INTERFACE_DEFINED__ */
' ########################################################################################
' Interface name = IWMDRMNetTransmitter
' IID = F040C12B-4415-4F20-93F0-453EB519A756
' Inherited interface = IUnknown
' ########################################################################################
#IF NOT %DEF(%IWMDRMNetTransmitter_INTERFACE_DEFINED)
 %IWMDRMNetTransmitter_INTERFACE_DEFINED = 1
$IID_IWMDRMNetTransmitter = GUID$("{F040C12B-4415-4F20-93F0-453EB519A756}")
INTERFACE IWMDRMNetTransmitter $IID_IWMDRMNetTransmitter
 INHERIT IUnknown
 ' =====================================================================================
 METHOD SetLicenseChallenge ( ' VTable offset = 12
 BYVAL pbLicenseChallenge AS BYTE PTR
 , BYVAL cbLicenseChallenge AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetRootLicenseResponse ( ' VTable offset = 16
 BYVAL bstrKID AS WSTRING
 , BYREF ppbLicenseResponse AS DWORD
 , BYREF pcbLicenseResponse AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetLeafLicenseResponse ( ' VTable offset = 20
 BYVAL bstrKID AS WSTRING
 , BYREF pPolicy AS WMDRMNET_POLICY
 , BYREF ppIWMDRMEncrypt AS IWMDRMEncrypt
 , BYREF ppbLicenseResponse AS DWORD
 , BYREF pcbLicenseResponse AS DWORD
 ) AS LONG
 ' =====================================================================================
END INTERFACE
#ENDIF ' /* __IWMDRMNetTransmitter_INTERFACE_DEFINED__ */
' ########################################################################################
' Interface name = IWMDRMNetTransmitter2
' IID = 26BCB422-30C0-48B4-A641-D9FB1E656265
' Inherited interface = IWMDRMNetTransmitter
' ########################################################################################
#IF NOT %DEF(%IWMDRMNetTransmitter2_INTERFACE_DEFINED)
 %IWMDRMNetTransmitter2_INTERFACE_DEFINED = 1
$IID_IWMDRMNetTransmitter2 = GUID$("{26BCB422-30C0-48B4-A641-D9FB1E656265}")
INTERFACE IWMDRMNetTransmitter2 $IID_IWMDRMNetTransmitter2
 INHERIT IUnknown
 ' =====================================================================================
 ' IWMDRMNetTransmitter Methods
 ' =====================================================================================
 METHOD SetLicenseChallenge ( ' VTable offset = 12
 BYVAL pbLicenseChallenge AS BYTE PTR
 , BYVAL cbLicenseChallenge AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetRootLicenseResponse ( ' VTable offset = 16
 BYVAL bstrKID AS WSTRING
 , BYREF ppbLicenseResponse AS DWORD
 , BYREF pcbLicenseResponse AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetLeafLicenseResponse ( ' VTable offset = 20
 BYVAL bstrKID AS WSTRING
 , BYREF pPolicy AS WMDRMNET_POLICY
 , BYREF ppIWMDRMEncrypt AS IWMDRMEncrypt
 , BYREF ppbLicenseResponse AS DWORD
 , BYREF pcbLicenseResponse AS DWORD
 ) AS LONG
 ' =====================================================================================
 ' =====================================================================================
 ' IWMDRMNetTransmitter2 Method
 ' =====================================================================================
 METHOD GetSimpleLicenseResponse ( ' VTable offset = 24
 BYVAL bstrKID AS WSTRING
 , BYREF pPolicy AS WMDRMNET_POLICY
 , BYREF ppIWMDRMEncrypt AS IWMDRMEncrypt
 , BYREF ppbLicenseResponse AS DWORD
 , BYREF pcbLicenseResponse AS DWORD
 ) AS LONG
 ' =====================================================================================
END INTERFACE
#ENDIF ' /* __IWMDRMNetTransmitter2_INTERFACE_DEFINED__ */
' ########################################################################################
' Interface name = IWMDRMIndividualizationStatus
' IID = 7DB091BD-DB6A-4FA4-BCBF-0783E256C78C
' Inherited interface = IUnknown
' ########################################################################################
#IF NOT %DEF(%IWMDRMIndividualizationStatus_INTERFACE_DEFINED)
 %IWMDRMIndividualizationStatus_INTERFACE_DEFINED = 1
$IID_IWMDRMIndividualizationStatus = GUID$("{7DB091BD-DB6A-4FA4-BCBF-0783E256C78C}")
INTERFACE IWMDRMIndividualizationStatus $IID_IWMDRMIndividualizationStatus
 INHERIT IUnknown
 ' =====================================================================================
 METHOD GetStatus ( ' VTable offset = 12
 BYREF pStatus AS WM_INDIVIDUALIZE_STATUS
 ) AS LONG
 ' =====================================================================================
END INTERFACE
#ENDIF ' /* __IWMDRMIndividualizationStatus_INTERFACE_DEFINED__ */
' ########################################################################################
' Interface name = IWMDRMLicenseBackupRestoreStatus
' IID = F653C5A2-0EB3-4503-9D88-C200552D0D55
' Inherited interface = IUnknown
' ########################################################################################
#IF NOT %DEF(%IWMDRMLicenseBackupRestoreStatus_INTERFACE_DEFINED)
 %IWMDRMLicenseBackupRestoreStatus_INTERFACE_DEFINED = 1
$IID_IWMDRMLicenseBackupRestoreStatus = GUID$("{F653C5A2-0EB3-4503-9D88-C200552D0D55}")
INTERFACE IWMDRMLicenseBackupRestoreStatus $IID_IWMDRMLicenseBackupRestoreStatus
 INHERIT IUnknown
 ' =====================================================================================
 METHOD GetStatus ( ' VTable offset = 12
 BYREF pStatus AS WM_BACKUP_RESTORE_STATUS
 ) AS LONG
 ' =====================================================================================
END INTERFACE
#ENDIF ' /* __IWMDRMLicenseBackupRestoreStatus_INTERFACE_DEFINED__ */
' ########################################################################################
' Interface name = IWMDRMNonSilentLicenseAquisition
' IID = 8AE059DD-BE6B-481A-863A-59056B50B748
' Inherited interface = IUnknown
' ########################################################################################
#IF NOT %DEF(%IWMDRMNonSilentLicenseAquisition_INTERFACE_DEFINED)
 %IWMDRMNonSilentLicenseAquisition_INTERFACE_DEFINED = 1
$IID_IWMDRMNonSilentLicenseAquisition = GUID$("{8AE059DD-BE6B-481A-863A-59056B50B748}")
INTERFACE IWMDRMNonSilentLicenseAquisition $IID_IWMDRMNonSilentLicenseAquisition
 INHERIT IUnknown
 ' =====================================================================================
 METHOD GetURL ( ' VTable offset = 12
 BYREF pbstrURL AS WSTRING
 ) AS LONG
 ' =====================================================================================
 METHOD GetChallenge ( ' VTable offset = 16
 BYREF pbstrChallenge AS WSTRING
 ) AS LONG
 ' =====================================================================================
END INTERFACE
#ENDIF ' /* __IWMDRMNonSilentLicenseAquisition_INTERFACE_DEFINED__ */
#ENDIF
