ISCPSecureQuery2::MakeDecision2 method (mswmdm.h)

The MakeDecision2 method determines whether the secure content provider is responsible for the content by examining data that Windows Media Device Manager passes to this method. This method provides two output parameters for error handling, a default location for updating revoked components, and a bit flag indicating which components have been revoked.

Syntax

HRESULT MakeDecision2(
  [in]      UINT                fuFlags,
  [in]      BYTE                *pData,
  [in]      DWORD               dwSize,
  [in]      DWORD               dwAppSec,
  [in]      BYTE                *pbSPSessionKey,
  [in]      DWORD               dwSessionKeyLen,
  [in]      IMDSPStorageGlobals *pStorageGlobals,
  [in]      BYTE                *pAppCertApp,
  [in]      DWORD               dwAppCertAppLen,
  [in]      BYTE                *pAppCertSP,
  [in]      DWORD               dwAppCertSPLen,
  [in, out] LPWSTR              *pszRevocationURL,
  [in, out] DWORD               *pdwRevocationURLLen,
  [out]     DWORD               *pdwRevocationBitFlag,
  [in, out] ULONGLONG           *pqwFileSize,
  [in]      IUnknown            *pUnknown,
  [out]     ISCPSecureExchange  **ppExchange,
  [in, out] BYTE [8]            abMac
);

Parameters

[in] fuFlags

Flags describing the data offered to the secure content provider for making decisions. This parameter must be included in the input message authentication code. One or more of the following flags can be combined using a bitwise OR.

Flag Description
WMDM_SCP_DECIDE_DATA The pData parameter points to the data to be examined.
WMDM_MODE_TRANSFER_PROTECTED The output object data from the ISCPSecureExchange interface must be protected. If Windows Media Device Manager sets neither or both mode flags, Windows Media Digital Rights Manager decides whether the output object data from the ISCPSecureExchange interface must be protected or unprotected.
WMDM_MODE_TRANSFER_UNPROTECTED The output object data from the ISCPSecureExchange interface must be unprotected. If Windows Media Device Manager sets neither or both mode flags, Windows Media Digital Rights Manager decides whether the output object data from the ISCPSecureExchange interface must be protected or unprotected.

[in] pData

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.

[in] dwSize

DWORD containing the size of the file data.

[in] dwAppSec

DWORD that contains the length, in bytes, of the dwAppSec member of the WMDMRIGHTS structure of the service provider and secure content provider to be examined. This parameter must be included in the input message authentication code.

[in] pbSPSessionKey

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.

[in] dwSessionKeyLen

DWORD containing the session key length.

[in] pStorageGlobals

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.

[in] pAppCertApp

Pointer to an application certificate of the application object.

[in] dwAppCertAppLen

DWORD containing the length, in bytes, of the application certificate.

[in] pAppCertSP

Pointer to the application certificate of the service provider object.

[in] dwAppCertSPLen

DWORD containing the length, in bytes, of the application certificate.

[in, out] pszRevocationURL

Pointer to a buffer to hold the revocation URL.

[in, out] pdwRevocationURLLen

Pointer to a DWORD containing the size of the rpszRevocationURL buffer in bytes.

[out] pdwRevocationBitFlag

Pointer to a DWORD containing the revocation bit flag. The flag value will be either zero, or one or more of the following flag names combined by using a bitwise OR.

Value Description
WMDM_WMDM_REVOKED Windows Media Device Manager itself has been revoked.
WMDM_APP_REVOKED The application has been revoked and needs to be updated before any DRM-protected content can be transferred.
WMDM_SP_REVOKED The service provider has been revoked and needs to be updated before any DRM-protected content can be transferred to it.
WMDM_SCP_REVOKED The secure content provider has been revoked and needs to be updated before any DRM-protected content can be transferred.

[in, out] pqwFileSize

Pointer to a QWORD containing the file size. The secure content provider is responsible for updating this value or setting it to zero if the size of the destination file cannot be determined at this point.

[in] pUnknown

Pointer to an unknown interface from the application.

[out] ppExchange

Pointer to an exchange object that receives the exchange interface.

[in, out] abMac

Array of eight bytes containing the message authentication code for the parameter data of this method. (WMDM_MAC_LENGTH is defined as 8.)

Return value

If the method succeeds, it returns S_OK. If it fails, it returns an HRESULT error code.

Return code Description
WMDM_E_REVOKED
The application certificate that the secure content provider uses to talk to the DRM client has been revoked.

Requirements

Requirement Value
Target Platform Windows
Header mswmdm.h
Library Mssachlp.lib

See also

ISCPSecureQuery Interface

ISCPSecureQuery2 Interface

ISCPSecureQuery::MakeDecision