Bagikan melalui


Metode IWMDRMDeviceApp::QueryDeviceStatus

Metode QueryDeviceStatus meminta perangkat untuk status dan kemampuan DRM saat ini.

Sintaks

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

Parameter

pDevice [in]

Penunjuk ke objek IWMDMDevice .

pdwStatus [out]

Nol atau lebih dari nilai DWORD berikut yang menjelaskan aspek DRM perangkat, dikombinasikan dengan OR bitwise. Lihat Keterangan.

Status Deskripsi
WMDRM_DEVICE_ISWMDRM Perangkat ini mendukung WINDOWS Media DRM.
WMDRM_DEVICE_NEEDCLOCK Perangkat tidak memiliki jam yang aman.
WMDRM_DEVICE_REVOKED Perangkat telah dicabut.
WMDRM_CLIENT_NEEDINDIV Keamanan DRM perlu disortir.
WMDRM_DEVICE_REFRESHCLOCK Jam perlu disegarkan.

Menampilkan nilai

Metode mengembalikan HRESULT. Nilai yang mungkin termasuk, tetapi tidak terbatas pada, yang ada dalam tabel berikut.

Menampilkan kode Deskripsi
S_OK
Metode berhasil.
DRM_E_INVALIDARG
Argumen input tidak valid.
NS_E_DRM_INVALID_CERTIFICATE
Sertifikat perangkat yang diambil dari perangkat tidak valid.
NS_E_DRM_UNABLE_TO_GET_DEVICE_CERT
Gagal mengambil sertifikat perangkat dari perangkat.

Keterangan

Metode ini harus dipanggil sebelum melakukan tindakan terbatas pada konten DRM, seperti mentransfer konten DRM ke perangkat, atau memperoleh informasi pengukuran. Jika nilai yang diambil oleh pdwStatus menunjukkan bahwa beberapa tindakan perlu dilakukan (seperti individualisasi untuk desktop atau memperoleh jam untuk perangkat), aplikasi harus memanggil AcquireDeviceData dan meneruskan nilai pdwStatus yang diambil dari fungsi ini ke parameter dwFlags di AcquireDeviceData. Jika nol dikembalikan, perangkat tidak mendukung Windows Media DRM 10 untuk Perangkat Portabel, dan tidak ada tindakan yang perlu diambil. Lihat Menangani Konten yang Dilindungi di Aplikasi untuk informasi selengkapnya.

Contoh

Contoh kode C++ berikut membuat objek WMDRMDeviceApp , memverifikasi bahwa perangkat adalah perangkat Windows Media DRM 10, bahwa jamnya akurat, lalu meminta data pengukuran.

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;    
}

Persyaratan

Persyaratan Nilai
Header
WMDRMDeviceApp.h (juga memerlukan Wmdrmdeviceapp_i.c, dibangun dari WMDRMDeviceApp.idl)
Pustaka
Mssachlp.lib

Lihat juga

Menangani Konten yang Dilindungi dalam Aplikasi

Antarmuka IWMDRMDeviceApp

IWMDRMDeviceApp2::QueryDeviceStatus2