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

LOCATION_REPORT_STATUS

列挙型
基底型i4

メンバー 5

名前10進16進説明
REPORT_NOT_SUPPORTED00x0要求されたレポート種別は API でサポートされていません。要求された種別の位置情報プロバイダーがインストールされていません。
REPORT_ERROR10x1レポートの作成時にエラーが発生したか、要求された種別の位置情報プロバイダーがデータを提供できません。位置情報プロバイダーが現在使用できない状態であるか、データを取得できない可能性があります。たとえば、GPS センサーが屋内にあり、衛星が捕捉できない場合にこの状態になることがあります。
REPORT_ACCESS_DENIED20x2このレポート種別にアクセスする権限が付与されていません。ILocation::RequestPermissions を呼び出してください。
REPORT_INITIALIZING30x3レポートは初期化中です。
REPORT_RUNNING40x4レポートは実行中です。要求されたレポート種別の新しい位置情報データが利用可能です。

公式ドキュメント

[Win32 Location API は、要件セクションに示されているオペレーティング システムで使用できます。以降のバージョンでは変更されるか、使用できなくなる可能性があります。代わりに Windows.Devices.Geolocation API を使用してください。 ]

特定のレポート種別の新しいレポートが取り得る状態を定義します。

解説(Remarks)

これらの値は新しいレポートの状態を表します。報告された状態に関係なく、最新のレポートは ILocation::GetReport を通じて引き続き取得できます。状態が REPORT_RUNNING の場合、レポート内のデータは新しいものです。それ以外の場合、ILocation::GetReport はキャッシュされたデータが利用可能であればそれを返します。

次のコード例は、ILocation::GetReportStatus から LOCATION_REPORT_STATUS の値を取得する方法を示します。

    // Get the status of this report type
    if (SUCCEEDED(spLocation->GetReportStatus(IID_ILatLongReport, &status))) 
    {
        bool fIsNotRunning = true;
        switch (status) 
        {
        case REPORT_RUNNING:
            // If the status for the current report is running,
            // then do not print any additional message.
            // Otherwise, print a message indicating that reports may contain cached data.
            fIsNotRunning = false;
            break;
        case REPORT_NOT_SUPPORTED:
            wprintf(L"\nThere is no sensor installed for this report type.\n");
            break;
        case REPORT_ERROR:
            wprintf(L"\nReport error.\n");
            break;
        case REPORT_ACCESS_DENIED:
            wprintf(L"\nAccess denied to reports.\n");
            break;
        case REPORT_INITIALIZING:
            wprintf(L"\nReport is initializing.\n");
            break;
        }

        if (true == fIsNotRunning)
        {
            wprintf(L"Location reports returned from GetReport contain cached data.\n");
        }
    }

次のコードは、コールバック関数 ILocationEvents::OnStatusChanged の実装例です。この実装は、緯度/経度レポートの状態が変化したときにメッセージを出力します。

// This is called when the status of a report type changes.
// The LOCATION_REPORT_STATUS enumeration is defined in LocApi.h in the SDK
STDMETHODIMP CLocationEvents::OnStatusChanged(REFIID reportType, LOCATION_REPORT_STATUS status)
{
    if (IID_ILatLongReport == reportType)
    {
        switch (status)
        {
        case REPORT_NOT_SUPPORTED:
            wprintf(L"\nNo devices detected.\n");
            break;
        case REPORT_ERROR:
            wprintf(L"\nReport error.\n");
            break;
        case REPORT_ACCESS_DENIED:
            wprintf(L"\nAccess denied to reports.\n");
            break;
        case REPORT_INITIALIZING:
            wprintf(L"\nReport is initializing.\n");
            break;
        case REPORT_RUNNING:
            wprintf(L"\nRunning.\n");
            break;
        }
    }
    else if (IID_ICivicAddressReport == reportType)
    {
    }

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

各言語での定義

列挙メンバーの定義。HSP タブは #define global(値は16進)。

typedef enum LOCATION_REPORT_STATUS : int {
    REPORT_NOT_SUPPORTED = 0,
    REPORT_ERROR = 1,
    REPORT_ACCESS_DENIED = 2,
    REPORT_INITIALIZING = 3,
    REPORT_RUNNING = 4
} LOCATION_REPORT_STATUS;
public enum LOCATION_REPORT_STATUS : int
{
    REPORT_NOT_SUPPORTED = 0,
    REPORT_ERROR = 1,
    REPORT_ACCESS_DENIED = 2,
    REPORT_INITIALIZING = 3,
    REPORT_RUNNING = 4,
}
Public Enum LOCATION_REPORT_STATUS As Integer
    REPORT_NOT_SUPPORTED = 0
    REPORT_ERROR = 1
    REPORT_ACCESS_DENIED = 2
    REPORT_INITIALIZING = 3
    REPORT_RUNNING = 4
End Enum
import enum

class LOCATION_REPORT_STATUS(enum.IntEnum):
    REPORT_NOT_SUPPORTED = 0
    REPORT_ERROR = 1
    REPORT_ACCESS_DENIED = 2
    REPORT_INITIALIZING = 3
    REPORT_RUNNING = 4
// LOCATION_REPORT_STATUS
pub const REPORT_NOT_SUPPORTED: i32 = 0;
pub const REPORT_ERROR: i32 = 1;
pub const REPORT_ACCESS_DENIED: i32 = 2;
pub const REPORT_INITIALIZING: i32 = 3;
pub const REPORT_RUNNING: i32 = 4;
// LOCATION_REPORT_STATUS
const (
	REPORT_NOT_SUPPORTED int32 = 0
	REPORT_ERROR int32 = 1
	REPORT_ACCESS_DENIED int32 = 2
	REPORT_INITIALIZING int32 = 3
	REPORT_RUNNING int32 = 4
)
const
  REPORT_NOT_SUPPORTED = 0;
  REPORT_ERROR = 1;
  REPORT_ACCESS_DENIED = 2;
  REPORT_INITIALIZING = 3;
  REPORT_RUNNING = 4;
// LOCATION_REPORT_STATUS
pub const REPORT_NOT_SUPPORTED: i32 = 0;
pub const REPORT_ERROR: i32 = 1;
pub const REPORT_ACCESS_DENIED: i32 = 2;
pub const REPORT_INITIALIZING: i32 = 3;
pub const REPORT_RUNNING: i32 = 4;
const
  REPORT_NOT_SUPPORTED* = 0
  REPORT_ERROR* = 1
  REPORT_ACCESS_DENIED* = 2
  REPORT_INITIALIZING* = 3
  REPORT_RUNNING* = 4
enum LOCATION_REPORT_STATUS : int {
    REPORT_NOT_SUPPORTED = 0,
    REPORT_ERROR = 1,
    REPORT_ACCESS_DENIED = 2,
    REPORT_INITIALIZING = 3,
    REPORT_RUNNING = 4,
}
#define global REPORT_NOT_SUPPORTED 0x0
#define global REPORT_ERROR         0x1
#define global REPORT_ACCESS_DENIED 0x2
#define global REPORT_INITIALIZING  0x3
#define global REPORT_RUNNING       0x4