共用方式為


IWMDRMDeviceApp::QueryDeviceStatus 方法

QueryDeviceStatus方法會查詢裝置目前的 DRM 狀態和功能。

語法

HRESULT QueryDeviceStatus(
  [in]  IWMDMDevice *pDevice,
  [out] DWORD       *pdwStatus
);

參數

pDevice [in]

IWMDMDevice物件的指標。

pdwStatus [out]

下列描述裝置 DRM 層面的零或多個 DWORD 值,結合位 OR。 請參閱<備註>。

狀態 描述
WMDRM_DEVICE_ISWMDRM 裝置支援 Windows Media DRM。
WMDRM_DEVICE_NEEDCLOCK 裝置沒有安全時鐘。
WMDRM_DEVICE_REVOKED 裝置已撤銷。
WMDRM_CLIENT_NEEDINDIV DRM 安全性必須個別化。
WMDRM_DEVICE_REFRESHCLOCK 時鐘必須重新整理。

傳回值

方法會傳回 HRESULT。 可能的值包括 (但不限於) 下表中的這些值。

傳回碼 描述
S_OK
此方法已成功。
DRM_E_INVALIDARG
輸入引數無效。
NS_E_DRM_INVALID_CERTIFICATE
從裝置擷取的裝置憑證無效。
NS_E_DRM_UNABLE_TO_GET_DEVICE_CERT
無法從裝置擷取裝置憑證。

備註

在 DRM 內容上執行任何受限制的動作之前,應該先呼叫這個方法,例如將 DRM 內容傳輸至裝置,或取得計量資訊。 如果pdwStatus所擷取的值指出必須執行某些動作 (,例如桌面的個別化,或取得裝置) 時鐘,應用程式應該呼叫AcquireDeviceData並將擷取的pdwStatus值從此函式傳遞至AcquireDeviceData中的dwFlags參數。 如果傳回零,裝置不支援適用于可攜式裝置的 Windows Media DRM 10,不需要採取任何動作。 如需詳細資訊 ,請參閱在應用程式中處理受保護的內容

範例

下列 C++ 程式碼範例會建立 WMDRMDeviceApp 物件、確認裝置是 Windows Media DRM 10 裝置、其時鐘正確,然後要求計量資料。

HRESULT hr = S_OK;
// Create the WMDRMDeviceApp object.
CComPtr<IWMDRMDeviceApp> pDRM;
hr = pDRM.CoCreateInstance(CLSID_WMDRMDeviceApp, 0, CLSCTX_ALL);

// Find out first if the device is a WMDRM 10 device, and if it requires
// any clock updates.
DWORD status = 0;
hr = pDRM->QueryDeviceStatus(pDevice, &status);

if (!(WMDRM_DEVICE_ISWMDRM & status)) // Device is not WMDRM 10. Nothing can be updated,
    return E_FAIL;                   // and metering cannot be performed.
else if (status & WMDRM_DEVICE_REVOKED) // Device is revoked.
    return E_FAIL;
else if (status & WMDRM_DEVICE_NEEDCLOCK || 
    status & WMDRM_CLIENT_NEEDINDIV ||
    status & WMDRM_DEVICE_REFRESHCLOCK)
{
    // Need to update device clock. 
    // Using custom function, which is synchronous.
    hr = myAcquireDeviceData(pDRM, pDevice, this, status, &result);
    if (hr != S_OK || result != 0)    // Couldn't perform the updates.
        return E_FAIL;    
}

規格需求

需求
標頭
WMDRMDeviceApp.h (也需要從 WMDRMDeviceApp.idl 建置的 Wmdrmdeviceapp_i.c)
程式庫
Mssachlp.lib

另請參閱

處理應用程式中受保護的內容

IWMDRMDeviceApp 介面

IWMDRMDeviceApp2::QueryDeviceStatus2