ISensor
COM公式ドキュメント
センサーを表します。
メソッド 15
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
センサーの一意の識別子を取得します。
| pID | GUID* | out | ID を受け取る SENSOR_ID のアドレス。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表のものが含まれますが、これらに限定されません。
| 戻り値のコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| センサードライバーがセンサー ID を提供しませんでした。 | |
| pID に NULL が渡されました。 |
解説(Remarks)
SENSOR_ID は、現在のコンピューター上でセンサーを一意に識別する GUID です。この ID は SENSOR_PROPERTY_PERSISTENT_UNIQUE_ID という名前の定数に対応します。
ISensorManager::GetSensorByID を呼び出すことで、ID を使用して特定のセンサーへのポインターを取得できます。
センサーカテゴリーの識別子を取得します。
| pSensorCategory | GUID* | out | センサーカテゴリー ID を受け取る SENSOR_CATEGORY_ID のアドレス。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表のものが含まれますが、これらに限定されません。
| 戻り値のコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| センサードライバーがカテゴリー値を提供しませんでした。返される PROPVARIANT のエラー値は HRESULT_FROM_WIN32 ( ERROR_NOT_FOUND) に設定されます。 | |
| pSensorCategory に NULL が渡されました。 |
解説(Remarks)
SENSOR_CATEGORY_ID は、センサーカテゴリーを一意に識別する GUID です。
センサータイプ ID を取得します。
| pSensorType | GUID* | out | センサータイプ ID を受け取る SENSOR_TYPE_ID のアドレス。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表のものが含まれますが、これらに限定されません。
| 戻り値のコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| センサードライバーがセンサータイプ値を提供しませんでした。返される PROPVARIANT のエラー値は HRESULT_FROM_WIN32 ( ERROR_NOT_FOUND) に設定されます。 | |
| pSensorType に NULL が渡されました。 |
解説(Remarks)
センサータイプは、センサーカテゴリーよりも具体的なグループ分けです。 センサータイプ ID は Sensors.h で定義される GUID です。
ユーザーが目にすることを想定したセンサー名を取得します。
| pFriendlyName | LPWSTR* | out | フレンドリ名を受け取る BSTR のアドレス。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表のものが含まれますが、これらに限定されません。
| 戻り値のコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| センサードライバーがフレンドリ名の値を提供しませんでした。pFriendlyName を通じて提供される値は有効ではありません。 | |
| pFriendlyName に NULL が渡されました。 |
プロパティ値を取得します。
| key | PROPERTYKEY* | in | 取得するプロパティ値を指定する REFPROPERTYKEY。 |
| pProperty | PROPVARIANT* | out | プロパティ値を受け取る PROPVARIANT ポインター。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表のものが含まれますが、これらに限定されません。
| 戻り値のコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
|
センサーは指定されたプロパティをサポートしていません。pProperty を通じて提供される値は VT_NULL です。 |
| pProperty に NULL が渡されました。 |
解説(Remarks)
複数のプロパティ値をコレクションとして取得するには、ISensor::GetProperties を呼び出します。
複数のセンサープロパティを取得します。
| pKeys | IPortableDeviceKeyCollection* | inoptional | 要求するプロパティ値の PROPERTYKEY コレクションを含む IPortableDeviceKeyCollection インターフェースへのポインター。サポートされているすべてのプロパティを取得するには NULL を設定します。 |
| ppProperties | IPortableDeviceValues** | out | 要求されたプロパティ値へのポインターを受け取る IPortableDeviceValues ポインターのアドレス。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表のものが含まれますが、これらに限定されません。
| 戻り値のコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| センサードライバーは、指定されたプロパティのうち少なくとも 1 つをサポートしていません。IPortableDeviceValues インターフェースを通じて返される、サポートされていない各プロパティの PROPVARIANT は、そのエラー値が HRESULT_FROM_WIN32 (ERROR_NOT_FOUND) に設定されます。 | |
| ppProperties に NULL が渡されました。 |
解説(Remarks)
このメソッドを使用すると、センサーのメーカー、モデル、シリアル番号など、複数のプロパティの値を 1 回の呼び出しで取得できます。単一のプロパティを取得するには、ISensor::GetProperty を呼び出します。
IPortableDeviceKeyCollection インターフェースと IPortableDeviceValues インターフェースは、Windows Portable Devices API によって定義されます。
例
センサーからプロパティを取得する方法の例については、Setting and Retrieving Sensor Properties を参照してください。
センサーが提供できるデータフィールドを表す PROPERTYKEY のセットを取得します。
| ppDataFields | IPortableDeviceKeyCollection** | out | サポートされているデータフィールドの一覧を受け取る IPortableDeviceKeyCollection ポインターのアドレス。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表のものが含まれますが、これらに限定されません。
| 戻り値のコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| ppDataFields に NULL が渡されました。 |
センサープロパティを指定します。
| pProperties | IPortableDeviceValues* | inoptional | 設定するプロパティと値の一覧を含む IPortableDeviceValues インターフェースへのポインター。 |
| ppResults | IPortableDeviceValues** | out | 正常に設定されたプロパティの一覧を受け取る IPortableDeviceValues インターフェースのアドレス。各プロパティには関連付けられた HRESULT 値があり、プロパティの設定が成功したかどうかを示します。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表のものが含まれますが、これらに限定されません。
| 戻り値のコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 指定されたプロパティのうち 1 つ以上の設定要求が失敗しました。どのプロパティが成功したか(ある場合)を確認するには ppResults を調べてください。 | |
| ppResults に NULL が渡されました。 |
解説(Remarks)
このメソッドを使用すると、センサーのメーカー、モデル、シリアル番号など、1 つ以上のプロパティの値を 1 回の呼び出しで指定できます。
すべてのプロパティを設定できるわけではありません。
IPortableDeviceValues は、Windows Portable Devices API によって定義されます。
例
プロパティを設定する方法の例については、Setting and Retrieving Sensor Properties を参照してください。
センサーが指定されたデータフィールドをサポートしているかどうかを示します。
| key | PROPERTYKEY* | in | 検索対象のデータフィールドを指定する REFPROPERTYKEY 値。 |
| pIsSupported | VARIANT_BOOL* | out | センサーがそのデータフィールドをサポートしているかどうかを示す値を受け取る VARIANT_BOOL のアドレス。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表のものが含まれますが、これらに限定されません。
| 戻り値のコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| pIsSupported に NULL が渡されました。 |
センサーの現在の動作状態を取得します。
| pState | SensorState* | out | 現在の状態を受け取る SensorState 変数のアドレス。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表のものが含まれますが、これらに限定されません。
| 戻り値のコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| センサードライバーが状態値を提供しませんでした。pState を通じて提供される値は有効ではありません。 | |
| pState に NULL が渡されました。 |
最新のセンサーデータレポートを取得します。
| ppDataReport | ISensorDataReport** | out | 最新のセンサーデータレポートへのポインターを受け取る ISensorDataReport ポインターのアドレス。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表のものが含まれますが、これらに限定されません。
| 戻り値のコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| センサードライバーが不正な形式のデータを提供しました。たとえば、データがサポートされていない型でした。プラットフォーム定義のデータフィールドのデータ型については、Sensor Categories, Types, and Data Fields を参照してください。 | |
|
センサーに報告できるデータがありません。たとえば、GPS センサーが衛星の測位を取得している最中である場合などです。 |
| ppDataReport に NULL が渡されました。 |
解説(Remarks)
位置(ロケーション)センサーについては、ユーザーがアクセス許可を付与したセンサーからのみデータを取得できます。
このメソッドは、ドライバーが状態を SENSOR_STATE_READY に設定する前にデータを返す場合があります。
例
センサーデータを取得する方法の例については、Retrieving Sensor Data Values を参照してください。
センサーが指定されたイベントをサポートしているかどうかを示します。
| eventGuid | GUID* | in | 検索対象のイベントを指定する REFGUID 値。 |
| pIsSupported | VARIANT_BOOL* | out | センサーがそのイベントをサポートしているかどうかを示す値を受け取る VARIANT_BOOL のアドレス。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表のものが含まれますが、これらに限定されません。
| 戻り値のコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| pIsSupported に NULL が渡されました。 |
現在のイベント関心(event interest)設定を取得します。
| ppValues | GUID** | out | センサーイベント識別子の配列を指す GUID ポインターのアドレス。 |
| pCount | DWORD* | out | ppValues が指す配列内の GUID の数。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表のものが含まれますが、これらに限定されません。
| 戻り値のコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| ppValues または pCount に NULL が渡されました。 |
解説(Remarks)
各センサーイベントは GUID で表されます。このメソッドは、要求されたイベントの一覧を GUID の配列として返します。
受信するセンサーイベントの一覧を指定します。
| pValues | GUID* | inoptional | GUID の配列へのポインター。各 GUID は受信するイベントを表します。すべてのデータ更新イベントおよびすべてのカスタムイベントを受信するには NULL を設定します。 |
| count | DWORD | in | pValues が指す配列内の GUID の数。pValues が NULL の場合は 0 を設定します。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表のものが含まれますが、これらに限定されません。
| 戻り値のコード | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
各センサーイベントは GUID で表されます。このメソッドは、受信したいイベントの一覧を GUID の配列として受け取ります。
例
イベント関心を設定する方法の例については、Using Sensor API Events を参照してください。
センサーイベント通知を受信するためのインターフェースを指定します。
| pEvents | ISensorEvents* | inoptional | イベント通知を受信する ISensorEvents コールバックインターフェースへのポインター。イベント通知をキャンセルするには NULL を設定します。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表のものが含まれますが、これらに限定されません。
| 戻り値のコード | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
受信するイベントは、SetEventInterest を呼び出して指定します。現在のイベント関心の一覧は、GetEventInterest を呼び出して取得できます。
例
イベントシンクを設定する方法の例については、Using Sensor API Events を参照してください。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_ISensor "{5FA08F80-2657-458E-AF75-46F73FA6AC5C}" #usecom global ISensor IID_ISensor "{E97CED00-523A-4133-BF6F-D3A2DAE7F6BA}" #comfunc global ISensor_GetID 3 var #comfunc global ISensor_GetCategory 4 var #comfunc global ISensor_GetType 5 var #comfunc global ISensor_GetFriendlyName 6 var #comfunc global ISensor_GetProperty 7 var,var #comfunc global ISensor_GetProperties 8 sptr,sptr #comfunc global ISensor_GetSupportedDataFields 9 sptr #comfunc global ISensor_SetProperties 10 sptr,sptr #comfunc global ISensor_SupportsDataField 11 var,var #comfunc global ISensor_GetState 12 var #comfunc global ISensor_GetData 13 sptr #comfunc global ISensor_SupportsEvent 14 var,var #comfunc global ISensor_GetEventInterest 15 var,var #comfunc global ISensor_SetEventInterest 16 var,int #comfunc global ISensor_SetEventSink 17 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_ISensor "{5FA08F80-2657-458E-AF75-46F73FA6AC5C}" #usecom global ISensor IID_ISensor "{E97CED00-523A-4133-BF6F-D3A2DAE7F6BA}" #comfunc global ISensor_GetID 3 sptr #comfunc global ISensor_GetCategory 4 sptr #comfunc global ISensor_GetType 5 sptr #comfunc global ISensor_GetFriendlyName 6 sptr #comfunc global ISensor_GetProperty 7 sptr,sptr #comfunc global ISensor_GetProperties 8 sptr,sptr #comfunc global ISensor_GetSupportedDataFields 9 sptr #comfunc global ISensor_SetProperties 10 sptr,sptr #comfunc global ISensor_SupportsDataField 11 sptr,sptr #comfunc global ISensor_GetState 12 sptr #comfunc global ISensor_GetData 13 sptr #comfunc global ISensor_SupportsEvent 14 sptr,sptr #comfunc global ISensor_GetEventInterest 15 sptr,sptr #comfunc global ISensor_SetEventInterest 16 sptr,int #comfunc global ISensor_SetEventSink 17 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。