Previous | Next |
The MakeDecision method determines whether access to the content is allowed. If access is allowed, this method returns the interface used to access the content.
Syntax
HRESULT MakeDecision(
UINT fuFlags,
BYTE* pData,
DWORD dwSize,
DWORD dwAppSec,
BYTE* pbSPSessionKey,
DWORD dwSessionKeyLen,
IMDSPStorageGlobals* pStorageGlobals,
ISCPSecureExchange** ppExchange,
BYTE abMac[WMDM_MAC_LENGTH]
);
Parameters
fuFlags
[in] Flags describing the data offered to the SCP for making decisions. This parameter must be included in the input message authentication code. The following flags can be present.
Flag | Description |
WMDM_SCP_DECIDE_DATA | The pData parameter points to data to be examined. |
WMDM_MODE_TRANSFER_PROTECTED | The output object data from the ISCPSecureExchange interface must be protected. This is the default mode if neither mode flag is set. |
WMDM_MODE_TRANSFER_UNPROTECTED | The output object data from the ISCPSecureExchange interface must be unprotected. |
pData
[in] Pointer to a data object containing the data to be examined. This parameter must be included in the input message authentication code and must be encrypted.
dwSize
[in] Double word that contains the length, in bytes, of the data to be examined. This parameter must be included in the input message authentication code.
dwAppSec
[in] Double word that indicates the current level of security of Windows Media Device Manager. This is the smaller of the current security levels of the application and the target Service Provider. This parameter must be included in the input message authentication code.
pbSPSessionKey
[in] Pointer to an array of bytes containing the session key for securing communication with the Service Provider to which pStgGlobals points. This parameter must be included in the input message authentication code and must be encrypted.
dwSessionKeyLen
[in] Length of the byte array to which pbSPSessionKey points. This parameter must be included in the input message authentication code.
pStorageGlobals
[in] Pointer to the IWMDMStorageGlobals interface on the root storage of the media or device to or from which the file is being transferred. This parameter must be included in the input message authentication code.
ppExchange
[out] Pointer to an exchange object that receives the exchange interface.
abMac
[in, out] Array of eight bytes containing the message authentication code for the parameter data of this method. (WMDM_MAC_LENGTH is defined as 8.)
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an HRESULT error code.
Return code | Description |
WMDM_E_CALL_OUT_OF_SEQUENCE | This method was called out of sequence. |
WMDM_E_MAC_CHECK_FAILED | The message authentication code is not valid. |
WMDM_E_MOREDATA | Windows Media Device Manager must call this method again with another packet of data. The size of the packet is determined by the pdwMinDecisionData parameter in the ISCPSecureQuery::GetDataDemands method. |
S_FALSE | The caller does not have the rights required to perform the requested transfer. |
E_INVALIDARG | A parameter is invalid or is a NULL pointer. |
E_FAIL | An unspecified error occurred. |
Remarks
This method is called after the ISCPSecureQuery::ExamineData method, and makes the final decision whether access to the content is allowed.
The WMDM_MODE_TRANSFER_PROTECTED mode fails if the device does not have a hard-coded serial number. The GetSerialNumber method returns WMDM_E_NOTSUPPORTED if it cannot get a hard-coded serial number from the device.
The WMDM_MODE_TRANSFER_UNPROTECTED mode requires an application security level (dwAppSec) in the license of less than or equal to 150.
See Also
Previous | Next |