IWMRegisteredDevice
COM公式ドキュメント
IWMRegisteredDevice インターフェイスは、登録済みデバイスオブジェクトの主要なインターフェイスです。デバイス登録データベース内の再生デバイスに関する情報へのアクセスを提供します。
メソッド 14
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
GetDeviceID メソッドは、デバイスを識別する 128 ビットの値を取得します。
| pSerialNumber | DRM_VAL16* | out | デバイスのシリアル番号を受け取る DRM_VAL16 構造体のアドレスです。 |
戻り値
このメソッドは HRESULT を返します。値としては、以下の表に示すものが含まれますが、これらに限定されません。
| リターンコード | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
シリアル番号には、128 ビットのメモリに格納できる任意の値を使用できます。
デバイスのシリアル番号とデバイス証明書を組み合わせることで、デバイスが一意に識別されます。製造元は、デバイスごとに個別の証明書を使用することが推奨されます。ただし、製造元は特定の種類のすべてのデバイスで 1 つの証明書を共有し、個々のデバイスをシリアル番号で区別することもできます。
GetDeviceCertificate メソッドは、デバイスの証明書を取得します。
| ppCertificate | INSSBuffer** | out | 証明書データを格納するバッファーオブジェクトの INSSBuffer インターフェイスへのポインターを受け取る変数のアドレスです。 |
戻り値
このメソッドは HRESULT を返します。値としては、以下の表に示すものが含まれますが、これらに限定されません。
| リターンコード | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
デバイス証明書には、デバイスに関連する保護情報が含まれています。
デバイス証明書とデバイスのシリアル番号を組み合わせることで、デバイスが一意に識別されます。製造元は、デバイスごとに個別の証明書を使用することが推奨されます。ただし、製造元は特定の種類のすべてのデバイスで 1 つの証明書を共有し、個々のデバイスをシリアル番号で区別することもできます。
GetDeviceType メソッドは、デバイスに関連付けられているデバイスの種類を取得します。
| pdwType | DWORD* | out | デバイスの種類を受け取る変数のアドレスです。 |
戻り値
このメソッドは HRESULT を返します。値としては、以下の表に示すものが含まれますが、これらに限定されません。
| リターンコード | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
Windows Media DRM 10 for Network Devices をサポートするデバイスは、DRM_DEVICE_REGISTER_TYPE_STREAMING 登録タイプを使用します。デバイスが Windows Media DRM 10 for Network Devices をサポートしているかどうかを判断するには、IsWmdrmCompliant を呼び出します。
DRM_DEVICE_REGISTER_TYPE_STORAGE 登録タイプは定義されていますが、このリリースでは使用されません。
GetAttributeCount メソッドは、デバイスに関連付けられている属性の総数を取得します。
| pcAttributes | DWORD* | out | 属性の数を受け取る変数のアドレスです。 |
戻り値
このメソッドは HRESULT を返します。値としては、以下の表に示すものが含まれますが、これらに限定されません。
| リターンコード | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
デバイスの属性を列挙するには、まずこのメソッドを呼び出し、次に 0 から属性の総数より 1 小さい値までのインデックス値に対して GetAttributeByIndex を呼び出します。
GetAttributeByIndex メソッドは、デバイスに関連付けられている属性を取得します。このメソッドは、取得する属性を指定するために属性インデックスを使用します。
| dwIndex | DWORD | in | 属性インデックスです。有効なインデックスは、0 から GetAttributeCount が返す属性数より 1 小さい値までの範囲です。 |
| pbstrName | LPWSTR* | out | 属性名を受け取る変数のアドレスです。 |
| pbstrValue | LPWSTR* | out | 属性値を受け取る変数のアドレスです。 |
戻り値
このメソッドは HRESULT を返します。値としては、以下の表に示すものが含まれますが、これらに限定されません。
| リターンコード | 説明 |
|---|---|
| メソッドは成功しました。 |
GetAttributeByName メソッドは、デバイスに関連付けられている属性を取得します。このメソッドは、取得する属性を指定するために属性名を使用します。
| bstrName | LPWSTR | in | 取得する属性の名前です。 |
| pbstrValue | LPWSTR* | out | 属性値を受け取る変数のアドレスです。 |
戻り値
このメソッドは HRESULT を返します。値としては、以下の表に示すものが含まれますが、これらに限定されません。
| リターンコード | 説明 |
|---|---|
| メソッドは成功しました。 |
SetAttributeByName メソッドは、デバイスの属性を設定します。
| bstrName | LPWSTR | in | 設定する属性の名前です。 |
| bstrValue | LPWSTR | in | 属性の値です。 |
戻り値
このメソッドは HRESULT を返します。値としては、以下の表に示すものが含まれますが、これらに限定されません。
| リターンコード | 説明 |
|---|---|
| メソッドは成功しました。 |
Approve メソッドは、メディアデータを受信するためのデバイスの承認状態を設定します。
| fApprove | BOOL | in | デバイスがメディアデータを受信することを承認する場合は TRUE を設定し、デバイスが承認されていないことを示す場合は FALSE を設定します。 |
戻り値
このメソッドは HRESULT を返します。値としては、以下の表に示すものが含まれますが、これらに限定されません。
| リターンコード | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
承認は、アプリケーションがデバイスの再生を承認したり、再生への使用を禁止したりするための仕組みです。一般的なシナリオでは、デバイスを使用するかどうかをユーザーに確認し、それに応じて承認を設定します。
データを受信するには、デバイスが開かれ、検証され、承認されている必要があります。
デバイスが開いているかどうかは、IsOpened を呼び出して確認できます。デバイスを開くには Open を呼び出します。
デバイスが有効なのは、過去 48 時間以内に近接検出が実行された場合のみです。デバイスの有効性は、IsValid を呼び出して確認できます。詳細については、IWMProximityDetection インターフェイスを参照してください。
デバイスが承認されているかどうかを判断するには、IsApproved メソッドを呼び出します。デバイスを承認または制限するには Approve を使用します。
IsValid メソッドは、デバイスの検証状態を取得します。
| pfValid | BOOL* | out | デバイスの検証状態を受け取る変数のアドレスです。TRUE はデバイスが有効であることを示します。FALSE はデバイスが有効ではなく、使用する前に再検証が必要であることを示します。 |
戻り値
このメソッドは HRESULT を返します。値としては、以下の表に示すものが含まれますが、これらに限定されません。
| リターンコード | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
データを受信するには、デバイスが開かれ、検証され、承認されている必要があります。
デバイスが開いているかどうかは、IsOpened を呼び出して確認できます。デバイスを開くには Open を呼び出します。
デバイスは、近接検出を実行することで検証されます。詳細については、IWMProximityDetection インターフェイスを参照してください。
デバイスが承認されているかどうかを判断するには、IsApproved メソッドを呼び出します。デバイスを承認するには、Approve メソッドを呼び出します。
IsApproved メソッドは、デバイスの承認状態を取得します。承認されたデバイスは、メディアデータを受信して再生できます。
| pfApproved | BOOL* | out | デバイスの承認状態を受け取る変数のアドレスです。TRUE は承認されていることを示します。 |
戻り値
このメソッドは HRESULT を返します。値としては、以下の表に示すものが含まれますが、これらに限定されません。
| リターンコード | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
データを受信するには、デバイスが開かれ、検証され、承認されている必要があります。
デバイスが開いているかどうかは、IsOpened を呼び出して確認できます。デバイスを開くには Open を呼び出します。
デバイスが有効なのは、過去 48 時間以内に近接検出が実行された場合のみです。デバイスの有効性は、IsValid を呼び出して確認できます。詳細については、IWMProximityDetection インターフェイスを参照してください。
デバイスが承認されているかどうかを確認するには、このメソッドを使用します。デバイスを承認するには、Approve メソッドを呼び出します。
IsWmdrmCompliant メソッドは、デバイスの DRM 準拠状態を取得します。準拠しているデバイスは、Windows Media DRM 10 for Network Devices プロトコルを使用してデータを受信できます。
| pfCompliant | BOOL* | out | デバイスの DRM 準拠状態を受け取る変数のアドレスです。TRUE は Windows Media DRM 10 for Network Devices がサポートされていることを示します。 |
戻り値
このメソッドは HRESULT を返します。値としては、以下の表に示すものが含まれますが、これらに限定されません。
| リターンコード | 説明 |
|---|---|
| メソッドは成功しました。 |
IsOpened メソッドは、デバイスの開いている状態を取得します。開いているデバイスは、メディアデータを受信する準備ができています。
| pfOpened | BOOL* | out | デバイスの開いている状態を受け取る変数のアドレスです。TRUE はデバイスが開いていることを示します。 |
戻り値
このメソッドは HRESULT を返します。値としては、以下の表に示すものが含まれますが、これらに限定されません。
| リターンコード | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
データを受信するには、デバイスが開かれ、検証され、承認されている必要があります。
デバイスが開いているかどうかを確認するには、このメソッドを使用できます。デバイスを開くには Open を呼び出します。
デバイスが有効なのは、過去 48 時間以内に近接検出が実行された場合のみです。デバイスの有効性は、IsValid を呼び出して確認できます。詳細については、IWMProximityDetection インターフェイスを参照してください。
デバイスが承認されているかどうかを判断するには、IsApproved メソッドを呼び出します。デバイスを承認するには、Approve メソッドを呼び出します。
Open メソッドは、デバイスがメディアデータを受信できるようにデバイスを開きます。
戻り値
このメソッドは HRESULT を返します。値としては、以下の表に示すものが含まれますが、これらに限定されません。
| リターンコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| クライアントコンピューターで既に最大数のデバイスが開かれています。 |
解説(Remarks)
データを受信するには、デバイスが開かれ、検証され、承認されている必要があります。
デバイスを開くには、このメソッドを使用します。デバイスが既に開いているかどうかを判断するには、IsOpened を呼び出します。1 台のコンピューターで同時に開くことができるデバイスは 10 台までです。
デバイスが有効なのは、過去 48 時間以内に近接検出が実行された場合のみです。デバイスの有効性は、IsValid を呼び出して確認できます。詳細については、IWMProximityDetection インターフェイスを参照してください。
デバイスが承認されているかどうかを判断するには、IsApproved メソッドを呼び出します。デバイスを承認するには、Approve メソッドを呼び出します。
Close メソッドは、デバイスが開いている場合はそれを閉じます。また、デバイスに関連付けられているすべてのリソースを解放します。
戻り値
このメソッドは HRESULT を返します。値としては、以下の表に示すものが含まれますが、これらに限定されません。
| リターンコード | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
このメソッドはすぐに戻りますが、デバイスに関連付けられているリソースは 30 ~ 60 秒後まで解放されません。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IWMRegisteredDevice "{A4503BEC-5508-4148-97AC-BFA75760A70D}" #usecom global IWMRegisteredDevice IID_IWMRegisteredDevice "{}" #comfunc global IWMRegisteredDevice_GetDeviceSerialNumber 3 var #comfunc global IWMRegisteredDevice_GetDeviceCertificate 4 sptr #comfunc global IWMRegisteredDevice_GetDeviceType 5 var #comfunc global IWMRegisteredDevice_GetAttributeCount 6 var #comfunc global IWMRegisteredDevice_GetAttributeByIndex 7 int,var,var #comfunc global IWMRegisteredDevice_GetAttributeByName 8 wstr,var #comfunc global IWMRegisteredDevice_SetAttributeByName 9 wstr,wstr #comfunc global IWMRegisteredDevice_Approve 10 int #comfunc global IWMRegisteredDevice_IsValid 11 var #comfunc global IWMRegisteredDevice_IsApproved 12 var #comfunc global IWMRegisteredDevice_IsWmdrmCompliant 13 var #comfunc global IWMRegisteredDevice_IsOpened 14 var #comfunc global IWMRegisteredDevice_Open 15 #comfunc global IWMRegisteredDevice_Close 16 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IWMRegisteredDevice "{A4503BEC-5508-4148-97AC-BFA75760A70D}" #usecom global IWMRegisteredDevice IID_IWMRegisteredDevice "{}" #comfunc global IWMRegisteredDevice_GetDeviceSerialNumber 3 sptr #comfunc global IWMRegisteredDevice_GetDeviceCertificate 4 sptr #comfunc global IWMRegisteredDevice_GetDeviceType 5 sptr #comfunc global IWMRegisteredDevice_GetAttributeCount 6 sptr #comfunc global IWMRegisteredDevice_GetAttributeByIndex 7 int,sptr,sptr #comfunc global IWMRegisteredDevice_GetAttributeByName 8 wstr,sptr #comfunc global IWMRegisteredDevice_SetAttributeByName 9 wstr,wstr #comfunc global IWMRegisteredDevice_Approve 10 int #comfunc global IWMRegisteredDevice_IsValid 11 sptr #comfunc global IWMRegisteredDevice_IsApproved 12 sptr #comfunc global IWMRegisteredDevice_IsWmdrmCompliant 13 sptr #comfunc global IWMRegisteredDevice_IsOpened 14 sptr #comfunc global IWMRegisteredDevice_Open 15 #comfunc global IWMRegisteredDevice_Close 16 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。