ISensorDataReport
COM公式ドキュメント
センサーのデータレポートを表します。センサーのデータレポートには、センサーによって生成されたデータフィールド値と、データレポートが作成された時刻を示すタイムスタンプが含まれます。
メソッド 3
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
データレポートが作成された時刻を取得します。
| pTimeStamp | SYSTEMTIME* | out | タイムスタンプを受け取る SYSTEMTIME 変数のアドレス。 |
戻り値
このメソッドは HRESULT を返します。有効な値には、次の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドが成功しました。 | |
| センサードライバーがデータレポートに対する有効なタイムスタンプを返しませんでした。 | |
| pTimeStamp に NULL が渡されました。 |
解説(Remarks)
タイムスタンプには協定世界時 (UTC) が使用されます。
データレポートから単一のデータフィールド値を取得します。
| pKey | PROPERTYKEY* | in | 取得するデータフィールドを示す REFPROPERTYKEY。 |
| pValue | PROPVARIANT* | out | データフィールド値を受け取る PROPVARIANT のアドレス。 |
戻り値
このメソッドは HRESULT を返します。有効な値には、次の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドが成功しました。 | |
|
データフィールドが見つかりませんでした。 |
| pValue に NULL が渡されました。 |
解説(Remarks)
プラットフォームで定義されたデータフィールドの PROPERTYKEY は Sensors.h で定義されています。
例
センサーのデータフィールド値を取得する方法の例については、センサーのデータ値の取得を参照してください。
データフィールド値のコレクションを取得します。
| pKeys | IPortableDeviceKeyCollection* | inoptional | 値を取得するデータフィールドを含む IPortableDeviceKeyCollection インターフェースへのポインター。サポートされているすべてのデータフィールドの値を取得するには NULL を設定します。 |
| ppValues | IPortableDeviceValues** | out | 取得された値へのポインターを受け取る IPortableDeviceValues インターフェースポインターのアドレス。 |
戻り値
このメソッドは HRESULT を返します。有効な値には、次の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドが成功しました。 | |
|
データフィールドが見つかりませんでした。どの値が ERROR_NOT_FOUND に設定されたかを判断するには ppValues を確認してください。 |
| ppValues に NULL が渡されました。 |
解説(Remarks)
IPortableDeviceKeyCollection および IPortableDeviceValues インターフェースは、Windows Portable Devices API によって定義されています。
このメソッドが HRESULT_FROM_WIN32(ERROR_NOT_FOUND) を返す場合、IPortableDeviceValues インターフェースに含まれる 1 つ以上の結果が HRESULT エラー値に設定されます。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_ISensorDataReport "{0AB9DF9B-C4B5-4796-8898-0470706A2E1D}" #usecom global ISensorDataReport IID_ISensorDataReport "{}" #comfunc global ISensorDataReport_GetTimestamp 3 var #comfunc global ISensorDataReport_GetSensorValue 4 var,var #comfunc global ISensorDataReport_GetSensorValues 5 sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_ISensorDataReport "{0AB9DF9B-C4B5-4796-8898-0470706A2E1D}" #usecom global ISensorDataReport IID_ISensorDataReport "{}" #comfunc global ISensorDataReport_GetTimestamp 3 sptr #comfunc global ISensorDataReport_GetSensorValue 4 sptr,sptr #comfunc global ISensorDataReport_GetSensorValues 5 sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。