다음을 통해 공유


ILocation::RequestPermissions 메서드(locationapi.h)

[Win32 위치 API는 요구 사항 섹션에 지정된 운영 체제에서 사용할 수 있습니다. 이후 버전에서는 변경되거나 제공되지 않을 수 있습니다. 대신 Windows.Devices.Geolocation API를 사용합니다. ]

위치 디바이스를 사용하도록 설정하는 사용자 권한을 요청하는 시스템 대화 상자를 엽니다.

구문

HRESULT RequestPermissions(
  [in] HWND  hParent,
  [in] IID   *pReportTypes,
  [in] ULONG count,
       BOOL  fModal
);

매개 변수

[in] hParent

부모 창에 대한 HWND입니다. 이 매개 변수는 선택 사항입니다. Windows 8에서는 hParent 가 제공된 경우 대화 상자가 항상 모달이고 hParent 가 NULL인 경우 모달이 아닙니다.

[in] pReportTypes

IID 배열에 대한 포인터입니다. 이 배열에는 사용 권한을 요청하는 모든 보고서 형식에 대한 인터페이스 ID가 포함되어야 합니다. 유효한 보고서 형식의 인터페이스 ID는 IID_ILatLongReport IID_ICivicAddressReport. ID 수는 count 매개 변수를 통해 지정된 값과 일치해야 합니다.

[in] count

pReportTypes에 포함된 인터페이스 ID의 수입니다.

fModal

이 매개 변수는 사용되지 않습니다.

반환 값

이 메서드는 이러한 값 중 하나를 반환할 수 있습니다.

다음 표에서는 호출이 동기식일 때 반환 코드에 대해 설명합니다.

반환 코드 Description
S_OK
사용자가 사용하도록 설정된 위치 서비스입니다. 메서드가 성공했습니다.
HRESULT_FROM_WIN32(ERROR_ACCESS_DENIED)
위치 플랫폼을 사용할 수 없습니다. 관리자가 위치 플랫폼을 해제했습니다.
HRESULT_FROM_WIN32(ERROR_CANCELLED)
사용자가 위치 서비스에 대한 액세스를 사용하도록 설정하지 않았거나 대화 상자를 취소했습니다.
 

다음 표에서는 호출이 비동기일 때 반환 코드에 대해 설명합니다.

반환 코드 설명
S_OK
사용자가 위치 서비스에 대한 액세스를 사용하도록 설정했습니다. 메서드가 성공했습니다.
E_INVALIDARG
인수가 잘못된 경우.
HRESULT_FROM_WIN32(ERROR_ACCESS_DENIED)
위치 플랫폼을 사용할 수 없습니다. 관리자가 위치 플랫폼을 해제했습니다. 대화 상자가 표시되지 않았습니다.

설명

사용자가 위치 서비스를 사용하도록 설정하지 않도록 선택하면 Windows에서 사용 권한 대화 상자를 다시 표시하지 않습니다.

참고RequestPermissions 에 대한 반복된 비동기 호출은 위치 서비스 사용 대화 상자의 여러 인스턴스를 표시하고 잠재적으로 대화 상자로 화면을 가득 채우면 사용자 환경이 저하될 수 있습니다. RequestPermissions에 대한 첫 번째 호출 후 다른 위치 센서가 설치될 수 있다고 생각되면 RequestPermissions를 동기적으로 호출하거나 모든 위치 센서가 설치되어 비동기 호출을 수행할 때까지 기다려야 합니다.
 
참고 Windows 애플리케이션의 UI(사용자 인터페이스) 스레드에서 동기 호출을 하면 UI 스레드를 차단하고 애플리케이션의 응답성이 떨어집니다. 이를 방지하려면 UI 스레드에서 RequestPermissions 를 동기적으로 호출하지 마세요.
 
참고 인터넷 Explorer BHO(브라우저 도우미 개체)와 같이 보호 모드로 실행되는 애플리케이션이 RequestPermissions를 호출하고 사용자가 대화 상자를 사용하여 위치를 사용하도록 설정하지 않기로 선택한 경우 위치 공급자는 사용하도록 설정되지 않지만 동일한 사용자가 RequestPermissions를 다시 호출하면 Windows에서 대화 상자를 다시 표시합니다.
 

예제

다음 예제에서는 RequestPermissions 를 호출하여 위도/경도 보고서에 대한 권한을 요청하는 방법을 보여 줍니다.

             // Array of report types of interest. Other ones include IID_ICivicAddressReport
            IID REPORT_TYPES[] = { IID_ILatLongReport };

            // Request permissions for this user account to receive location data for all the
            // types defined in REPORT_TYPES (which is currently just one report type)
            // The last parameter is not used.
            if (FAILED(spLocation->RequestPermissions(
                  NULL, 
                  REPORT_TYPES, 
                  ARRAYSIZE(REPORT_TYPES), 
                  TRUE))) 
            {
                wprintf(L"Warning: Unable to request permissions.\n");
            }


요구 사항

   
지원되는 최소 클라이언트 Windows 7 [데스크톱 앱만 해당],Windows 7
지원되는 최소 서버 지원되는 버전 없음
대상 플랫폼 Windows
헤더 locationapi.h
DLL LocationAPI.dll