Win32 API 日本語リファレンス
ホームMedia.WindowsMediaFormat › IWMDeviceRegistration

IWMDeviceRegistration

COM
IIDf6211f03-8d21-4e94-93e6-8510805f2d99継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

IWMDeviceRegistration インターフェースは、セキュアなデータ配信のために再生デバイスを登録します。WMCreateDeviceRegistration 関数を呼び出すことで、デバイス登録オブジェクトを作成し、その IWMDeviceRegistration インターフェースへのポインターを取得できます。

解説(Remarks)

デバイス登録データベースの主な目的は、Windows Media DRM 10 for Network Devices プロトコル向けにエンコードされたストリーミングメディアを受信できる接続済みデバイスに関するデータを格納することです。必要に応じて、その他のデバイスをデータベースに登録することもできます。

デバイス登録データベースは、クライアントコンピューター上のセキュアなデータベースです。データベースとのすべてのやり取りは内部で管理され、アプリケーションが直接アクセスすることはできません。

すべてのアプリケーションが同一のデバイス登録データベースを使用します。

データベース内のデバイスは種類ごとに登録されます。Windows Media DRM 10 for Network Devices をサポートするデバイスは、DRM_DEVICE_REGISTER_TYPE_STREAMING 登録種別を使用します。その他の種別は将来のバージョンでサポートされる可能性があります。

メソッド 6

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT RegisterDevice(DWORD dwRegisterType, BYTE* pbCertificate, DWORD cbCertificate, DRM_VAL16 SerialNumber, IWMRegisteredDevice** ppDevice)

RegisterDevice メソッドは、デバイスをデバイス一覧に追加します。

dwRegisterTypeDWORDin登録するデバイスの種類。Windows Media DRM 10 for Network Devices をサポートするデバイスは DRM_DEVICE_REGISTER_TYPE_STREAMING を使用します。Windows Media DRM 10 for Network Devices を使用しないデバイスを登録するには、このパラメーターを 0 に設定します。
pbCertificateBYTE*inメモリ内のデバイス証明書のアドレス。
cbCertificateDWORDin証明書データのサイズ(バイト単位)。
SerialNumberDRM_VAL16in128 ビットのデバイス識別子。DRM_VAL16 構造体に格納されます。
ppDeviceIWMRegisteredDevice**out新しく登録されたデバイスの IWMRegisteredDevice インターフェースへのポインターを受け取る変数のアドレス。

戻り値

このメソッドは HRESULT を返します。取り得る値には、以下の表に示すものが含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドが成功しました。
E_INVALIDARG
pbCertificate パラメーターが NULL ですが、cbCertificate パラメーターが 0 より大きい値です。

または

dwRegisterType パラメーターが DRM_DEVICE_REGISTER_TYPE_STREAMING に設定されていますが、証明書が指定されていません。

E_OUTOFMEMORY
内部変数のためのメモリを割り当てられませんでした。

解説(Remarks)

登録は、デバイスからアプリケーションに送信される登録要求メッセージによって開始されます。このメッセージを受信したら、まず IWMDRMMessageParser::ParseRegistrationReqMsg を呼び出して、メッセージから証明書とデバイス識別子を抽出する必要があります。メッセージを解析した後、証明書とデバイス識別子をこのメソッドに渡します。

デバイスを登録した後、保護されたメディアデータを送信する前に近接検出を実行する必要があります。

DRM_DEVICE_REGISTER_TYPE_STORAGE 登録種別は定義されていますが、本リリースでは使用されません。

vtbl 4 HRESULT UnregisterDevice(DWORD dwRegisterType, BYTE* pbCertificate, DWORD cbCertificate, DRM_VAL16 SerialNumber)

UnregisterDevice メソッドは、デバイス登録データベースからデバイスを削除します。

dwRegisterTypeDWORDin削除するデバイスの種類を格納する DWORD。Windows Media DRM 10 for Network Devices をサポートするデバイスは DRM_DEVICE_REGISTER_TYPE_STREAMING 登録種別を使用します。
pbCertificateBYTE*inメモリ内のデバイス証明書のアドレス。
cbCertificateDWORDin証明書データのサイズ(バイト単位)。
SerialNumberDRM_VAL16in128 ビットのデバイス識別子。DRM_VAL16 構造体に格納されます。

戻り値

このメソッドは HRESULT を返します。取り得る値には、以下の表に示すものが含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドが成功しました。
E_INVALIDARG
pbCertificate パラメーターが NULL ですが、cbCertificate パラメーターが 0 より大きい値です。

解説(Remarks)

DRM_DEVICE_REGISTER_TYPE_STORAGE 登録種別は定義されていますが、本リリースでは使用されません。

vtbl 5 HRESULT GetRegistrationStats(DWORD dwRegisterType, DWORD* pcRegisteredDevices)

GetRegistrationStats メソッドは、デバイス登録データベース内で指定された種類を持つデバイスの数を取得します。

dwRegisterTypeDWORDin数を取得する対象のデバイスの種類。Windows Media DRM 10 for Network Devices をサポートするデバイスは DRM_DEVICE_REGISTER_TYPE_STREAMING 登録種別を使用します。
pcRegisteredDevicesDWORD*out指定された種類の登録済みデバイスの数を受け取る変数のアドレス。

戻り値

このメソッドは HRESULT を返します。取り得る値には、以下の表に示すものが含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドが成功しました。
E_INVALIDARG
pcRegisteredDevices パラメーターが NULL です。

解説(Remarks)

DRM_DEVICE_REGISTER_TYPE_STORAGE 登録種別は定義されていますが、本リリースでは使用されません。

vtbl 6 HRESULT GetFirstRegisteredDevice(DWORD dwRegisterType, IWMRegisteredDevice** ppDevice)

GetFirstRegisteredDevice メソッドは、デバイス登録データベース内にある指定された種類の最初のデバイスに関する情報を取得します。

dwRegisterTypeDWORDin情報を取得する対象のデバイスの種類。Windows Media DRM 10 for Network Devices をサポートするデバイスは DRM_DEVICE_REGISTER_TYPE_STREAMING 登録種別を使用します。
ppDeviceIWMRegisteredDevice**outIWMRegisteredDevice インターフェースへのポインターを受け取る変数のアドレス。このインターフェースは、dwRegisterType で指定された種類に一致する、データベース内の最初の登録済みデバイスに関する情報へのアクセスを提供します。

戻り値

このメソッドは HRESULT を返します。取り得る値には、以下の表に示すものが含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドが成功しました。
E_INVALIDARG
ppDevice パラメーターが NULL です。
S_FALSE
列挙する登録済みデバイスがありません。この値が返された場合、ppDevice が指すアドレスは NULL に設定されます。

解説(Remarks)

指定された種類の登録済みデバイスを列挙するには、まずこのメソッドを呼び出して最初のデバイスエントリを取得します。その後、GetNextRegisteredDevice を繰り返し呼び出して、データベースから後続のデバイスエントリを取得します。

DRM_DEVICE_REGISTER_TYPE_STORAGE 登録種別は定義されていますが、本リリースでは使用されません。

vtbl 7 HRESULT GetNextRegisteredDevice(IWMRegisteredDevice** ppDevice)

GetNextRegisteredDevice メソッドは、指定された種類の登録済みデバイスを列挙します。

ppDeviceIWMRegisteredDevice**outIWMRegisteredDevice インターフェースへのポインターを受け取る変数のアドレス。このインターフェースは、GetFirstRegisteredDevice の呼び出しで使用した dwRegisterType パラメーターで指定された種類に一致する、データベース内の登録済みデバイスに関する情報へのアクセスを提供します。この情報は、一覧内の次のデバイス(前回取得したデバイスの次)に適用されます。

戻り値

このメソッドは HRESULT を返します。取り得る値には、以下の表に示すものが含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドが成功しました。
S_FALSE
一覧内に指定された種類のデバイスがこれ以上ありません。この値が返された場合、ppDevice が指すアドレスは NULL に設定されます。
E_INVALIDARG
ppDevice パラメーターが NULL です。

解説(Remarks)

指定された種類の登録済みデバイスを列挙するには、まず GetFirstRegisteredDevice を呼び出して最初のデバイスを取得します。その後、このメソッドを繰り返し呼び出して、一覧から後続のデバイスを取得します。指定された種類のすべてのデバイスを取得した後、次の GetNextRegisteredDevice の呼び出しは S_FALSE を返し、ppDevice が指すアドレスは NULL に設定されます。

vtbl 8 HRESULT GetRegisteredDeviceByID(DWORD dwRegisterType, BYTE* pbCertificate, DWORD cbCertificate, DRM_VAL16 SerialNumber, IWMRegisteredDevice** ppDevice)

GetRegisteredDeviceByID メソッドは、デバイス識別子を使用して登録済みデバイスに関する情報を取得します。

dwRegisterTypeDWORDin情報を取得する対象のデバイスの種類。Windows Media DRM 10 for Network Devices をサポートするデバイスは DRM_DEVICE_REGISTER_TYPE_STREAMING 登録種別を使用します。
pbCertificateBYTE*inメモリ内のデバイス証明書のアドレス。
cbCertificateDWORDin証明書データのサイズ(バイト単位)。
SerialNumberDRM_VAL16in128 ビットのデバイス識別子。DRM_VAL16 構造体に格納されます。
ppDeviceIWMRegisteredDevice**outIWMRegisteredDevice インターフェースへのポインターを受け取る変数のアドレス。このインターフェースは、他の識別パラメーターに一致する、一覧内の登録済みデバイスに関する情報へのアクセスを提供します。

戻り値

このメソッドは HRESULT を返します。取り得る値には、以下の表に示すものが含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドが成功しました。
E_INVALIDARG
ppDevice パラメーターが NULL です。

または

pbCertificate パラメーターが NULL ですが、cbCertificate パラメーターが 0 より大きい値です。

NS_E_DRM_DEVICE_NOT_REGISTERED
指定されたデバイスは登録されていません。

解説(Remarks)

アプリケーションがデバイスからメッセージを受信すると、IWMDRMMessageParser インターフェースのメソッドを使用して、デバイス証明書とデバイス識別子を抽出できます。そのデータをこのメソッドの入力として使用することで、デバイスを識別できます。

DRM_DEVICE_REGISTER_TYPE_STORAGE 登録種別は定義されていますが、本リリースでは使用されません。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IWMDeviceRegistration "{F6211F03-8D21-4E94-93E6-8510805F2D99}"
#usecom global IWMDeviceRegistration IID_IWMDeviceRegistration "{}"
#comfunc global IWMDeviceRegistration_RegisterDevice            3 int,var,int,int,sptr
#comfunc global IWMDeviceRegistration_UnregisterDevice          4 int,var,int,int
#comfunc global IWMDeviceRegistration_GetRegistrationStats      5 int,var
#comfunc global IWMDeviceRegistration_GetFirstRegisteredDevice  6 int,sptr
#comfunc global IWMDeviceRegistration_GetNextRegisteredDevice   7 sptr
#comfunc global IWMDeviceRegistration_GetRegisteredDeviceByID   8 int,var,int,int,sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。