Win32 API 日本語リファレンス
ホームDevices.Sensors › ISensor

ISensor

COM
IID5fa08f80-2657-458e-af75-46f73fa6ac5c継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

センサーを表します。

メソッド 15

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

vtbl 3 HRESULT GetID(GUID* pID)

センサーの一意の識別子を取得します。

pIDGUID*outID を受け取る SENSOR_ID のアドレス。

戻り値

このメソッドは HRESULT を返します。指定できる値には次の表のものが含まれますが、これらに限定されません。

戻り値のコード 説明
S_OK
メソッドは成功しました。
E_UNEXPECTED
センサードライバーがセンサー ID を提供しませんでした。
E_POINTER
pID に NULL が渡されました。

解説(Remarks)

SENSOR_ID は、現在のコンピューター上でセンサーを一意に識別する GUID です。この ID は SENSOR_PROPERTY_PERSISTENT_UNIQUE_ID という名前の定数に対応します。

ISensorManager::GetSensorByID を呼び出すことで、ID を使用して特定のセンサーへのポインターを取得できます。

vtbl 4 HRESULT GetCategory(GUID* pSensorCategory)

センサーカテゴリーの識別子を取得します。

pSensorCategoryGUID*outセンサーカテゴリー ID を受け取る SENSOR_CATEGORY_ID のアドレス。

戻り値

このメソッドは HRESULT を返します。指定できる値には次の表のものが含まれますが、これらに限定されません。

戻り値のコード 説明
S_OK
メソッドは成功しました。
E_UNEXPECTED
センサードライバーがカテゴリー値を提供しませんでした。返される PROPVARIANT のエラー値は HRESULT_FROM_WIN32 ( ERROR_NOT_FOUND) に設定されます。
E_POINTER
pSensorCategory に NULL が渡されました。

解説(Remarks)

SENSOR_CATEGORY_ID は、センサーカテゴリーを一意に識別する GUID です。

vtbl 5 HRESULT GetType(GUID* pSensorType)

センサータイプ ID を取得します。

pSensorTypeGUID*outセンサータイプ ID を受け取る SENSOR_TYPE_ID のアドレス。

戻り値

このメソッドは HRESULT を返します。指定できる値には次の表のものが含まれますが、これらに限定されません。

戻り値のコード 説明
S_OK
メソッドは成功しました。
E_UNEXPECTED
センサードライバーがセンサータイプ値を提供しませんでした。返される PROPVARIANT のエラー値は HRESULT_FROM_WIN32 ( ERROR_NOT_FOUND) に設定されます。
E_POINTER
pSensorType に NULL が渡されました。

解説(Remarks)

センサータイプは、センサーカテゴリーよりも具体的なグループ分けです。 センサータイプ ID は Sensors.h で定義される GUID です。

vtbl 6 HRESULT GetFriendlyName(LPWSTR* pFriendlyName)

ユーザーが目にすることを想定したセンサー名を取得します。

pFriendlyNameLPWSTR*outフレンドリ名を受け取る BSTR のアドレス。

戻り値

このメソッドは HRESULT を返します。指定できる値には次の表のものが含まれますが、これらに限定されません。

戻り値のコード 説明
S_OK
メソッドは成功しました。
E_UNEXPECTED
センサードライバーがフレンドリ名の値を提供しませんでした。pFriendlyName を通じて提供される値は有効ではありません。
E_POINTER
pFriendlyName に NULL が渡されました。
vtbl 7 HRESULT GetProperty(PROPERTYKEY* key, PROPVARIANT* pProperty)

プロパティ値を取得します。

keyPROPERTYKEY*in取得するプロパティ値を指定する REFPROPERTYKEY
pPropertyPROPVARIANT*outプロパティ値を受け取る PROPVARIANT ポインター。

戻り値

このメソッドは HRESULT を返します。指定できる値には次の表のものが含まれますが、これらに限定されません。

戻り値のコード 説明
S_OK
メソッドは成功しました。
HRESULT_FROM_WIN32(ERROR_NOT_FOUND)
センサーは指定されたプロパティをサポートしていません。pProperty を通じて提供される値は VT_NULL です。
E_POINTER
pProperty に NULL が渡されました。

解説(Remarks)

複数のプロパティ値をコレクションとして取得するには、ISensor::GetProperties を呼び出します。

vtbl 8 HRESULT GetProperties(IPortableDeviceKeyCollection* pKeys, IPortableDeviceValues** ppProperties)

複数のセンサープロパティを取得します。

pKeysIPortableDeviceKeyCollection*inoptional要求するプロパティ値の PROPERTYKEY コレクションを含む IPortableDeviceKeyCollection インターフェースへのポインター。サポートされているすべてのプロパティを取得するには NULL を設定します。
ppPropertiesIPortableDeviceValues**out要求されたプロパティ値へのポインターを受け取る IPortableDeviceValues ポインターのアドレス。

戻り値

このメソッドは HRESULT を返します。指定できる値には次の表のものが含まれますが、これらに限定されません。

戻り値のコード 説明
S_OK
メソッドは成功しました。
S_FALSE
センサードライバーは、指定されたプロパティのうち少なくとも 1 つをサポートしていません。IPortableDeviceValues インターフェースを通じて返される、サポートされていない各プロパティの PROPVARIANT は、そのエラー値が HRESULT_FROM_WIN32 (ERROR_NOT_FOUND) に設定されます。
E_POINTER
ppProperties に NULL が渡されました。

解説(Remarks)

このメソッドを使用すると、センサーのメーカー、モデル、シリアル番号など、複数のプロパティの値を 1 回の呼び出しで取得できます。単一のプロパティを取得するには、ISensor::GetProperty を呼び出します。

IPortableDeviceKeyCollection インターフェースと IPortableDeviceValues インターフェースは、Windows Portable Devices API によって定義されます。

センサーからプロパティを取得する方法の例については、Setting and Retrieving Sensor Properties を参照してください。

vtbl 9 HRESULT GetSupportedDataFields(IPortableDeviceKeyCollection** ppDataFields)

センサーが提供できるデータフィールドを表す PROPERTYKEY のセットを取得します。

ppDataFieldsIPortableDeviceKeyCollection**outサポートされているデータフィールドの一覧を受け取る IPortableDeviceKeyCollection ポインターのアドレス。

戻り値

このメソッドは HRESULT を返します。指定できる値には次の表のものが含まれますが、これらに限定されません。

戻り値のコード 説明
S_OK
メソッドは成功しました。
E_POINTER
ppDataFields に NULL が渡されました。
vtbl 10 HRESULT SetProperties(IPortableDeviceValues* pProperties, IPortableDeviceValues** ppResults)

センサープロパティを指定します。

pPropertiesIPortableDeviceValues*inoptional設定するプロパティと値の一覧を含む IPortableDeviceValues インターフェースへのポインター。
ppResultsIPortableDeviceValues**out正常に設定されたプロパティの一覧を受け取る IPortableDeviceValues インターフェースのアドレス。各プロパティには関連付けられた HRESULT 値があり、プロパティの設定が成功したかどうかを示します。

戻り値

このメソッドは HRESULT を返します。指定できる値には次の表のものが含まれますが、これらに限定されません。

戻り値のコード 説明
S_OK
メソッドは成功しました。
S_FALSE
指定されたプロパティのうち 1 つ以上の設定要求が失敗しました。どのプロパティが成功したか(ある場合)を確認するには ppResults を調べてください。
E_POINTER
ppResults に NULL が渡されました。

解説(Remarks)

このメソッドを使用すると、センサーのメーカー、モデル、シリアル番号など、1 つ以上のプロパティの値を 1 回の呼び出しで指定できます。

すべてのプロパティを設定できるわけではありません。

IPortableDeviceValues は、Windows Portable Devices API によって定義されます。

プロパティを設定する方法の例については、Setting and Retrieving Sensor Properties を参照してください。

vtbl 11 HRESULT SupportsDataField(PROPERTYKEY* key, VARIANT_BOOL* pIsSupported)

センサーが指定されたデータフィールドをサポートしているかどうかを示します。

keyPROPERTYKEY*in検索対象のデータフィールドを指定する REFPROPERTYKEY 値。
pIsSupportedVARIANT_BOOL*outセンサーがそのデータフィールドをサポートしているかどうかを示す値を受け取る VARIANT_BOOL のアドレス。

戻り値

このメソッドは HRESULT を返します。指定できる値には次の表のものが含まれますが、これらに限定されません。

戻り値のコード 説明
S_OK
メソッドは成功しました。
E_POINTER
pIsSupported に NULL が渡されました。
vtbl 12 HRESULT GetState(SensorState* pState)

センサーの現在の動作状態を取得します。

pStateSensorState*out現在の状態を受け取る SensorState 変数のアドレス。

戻り値

このメソッドは HRESULT を返します。指定できる値には次の表のものが含まれますが、これらに限定されません。

戻り値のコード 説明
S_OK
メソッドは成功しました。
E_UNEXPECTED
センサードライバーが状態値を提供しませんでした。pState を通じて提供される値は有効ではありません。
E_POINTER
pState に NULL が渡されました。
vtbl 13 HRESULT GetData(ISensorDataReport** ppDataReport)

最新のセンサーデータレポートを取得します。

ppDataReportISensorDataReport**out最新のセンサーデータレポートへのポインターを受け取る ISensorDataReport ポインターのアドレス。

戻り値

このメソッドは HRESULT を返します。指定できる値には次の表のものが含まれますが、これらに限定されません。

戻り値のコード 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
センサードライバーが不正な形式のデータを提供しました。たとえば、データがサポートされていない型でした。プラットフォーム定義のデータフィールドのデータ型については、Sensor Categories, Types, and Data Fields を参照してください。
HRESULT_FROM_WIN32(ERROR_NO_DATA)
センサーに報告できるデータがありません。たとえば、GPS センサーが衛星の測位を取得している最中である場合などです。
E_POINTER
ppDataReport に NULL が渡されました。

解説(Remarks)

位置(ロケーション)センサーについては、ユーザーがアクセス許可を付与したセンサーからのみデータを取得できます。

このメソッドは、ドライバーが状態を SENSOR_STATE_READY に設定する前にデータを返す場合があります。

センサーデータを取得する方法の例については、Retrieving Sensor Data Values を参照してください。

vtbl 14 HRESULT SupportsEvent(GUID* eventGuid, VARIANT_BOOL* pIsSupported)

センサーが指定されたイベントをサポートしているかどうかを示します。

eventGuidGUID*in検索対象のイベントを指定する REFGUID 値。
pIsSupportedVARIANT_BOOL*outセンサーがそのイベントをサポートしているかどうかを示す値を受け取る VARIANT_BOOL のアドレス。

戻り値

このメソッドは HRESULT を返します。指定できる値には次の表のものが含まれますが、これらに限定されません。

戻り値のコード 説明
S_OK
メソッドは成功しました。
E_POINTER
pIsSupported に NULL が渡されました。
vtbl 15 HRESULT GetEventInterest(GUID** ppValues, DWORD* pCount)

現在のイベント関心(event interest)設定を取得します。

ppValuesGUID**outセンサーイベント識別子の配列を指す GUID ポインターのアドレス。
pCountDWORD*outppValues が指す配列内の GUID の数。

戻り値

このメソッドは HRESULT を返します。指定できる値には次の表のものが含まれますが、これらに限定されません。

戻り値のコード 説明
S_OK
メソッドは成功しました。
E_POINTER
ppValues または pCount に NULL が渡されました。

解説(Remarks)

各センサーイベントは GUID で表されます。このメソッドは、要求されたイベントの一覧を GUID の配列として返します。

vtbl 16 HRESULT SetEventInterest(GUID* pValues, DWORD count)

受信するセンサーイベントの一覧を指定します。

pValuesGUID*inoptionalGUID の配列へのポインター。各 GUID は受信するイベントを表します。すべてのデータ更新イベントおよびすべてのカスタムイベントを受信するには NULL を設定します。
countDWORDinpValues が指す配列内の GUID の数。pValuesNULL の場合は 0 を設定します。

戻り値

このメソッドは HRESULT を返します。指定できる値には次の表のものが含まれますが、これらに限定されません。

戻り値のコード 説明
S_OK
メソッドは成功しました。

解説(Remarks)

各センサーイベントは GUID で表されます。このメソッドは、受信したいイベントの一覧を GUID の配列として受け取ります。

イベント関心を設定する方法の例については、Using Sensor API Events を参照してください。

vtbl 17 HRESULT SetEventSink(ISensorEvents* pEvents)

センサーイベント通知を受信するためのインターフェースを指定します。

pEventsISensorEvents*inoptionalイベント通知を受信する ISensorEvents コールバックインターフェースへのポインター。イベント通知をキャンセルするには NULL を設定します。

戻り値

このメソッドは HRESULT を返します。指定できる値には次の表のものが含まれますが、これらに限定されません。

戻り値のコード 説明
S_OK
メソッドは成功しました。

解説(Remarks)

受信するイベントは、SetEventInterest を呼び出して指定します。現在のイベント関心の一覧は、GetEventInterest を呼び出して取得できます。

イベントシンクを設定する方法の例については、Using Sensor API Events を参照してください。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_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 指定が可能。