Compartir a través de


Método ISensorManager::RequestPermissions (sensorsapi.h)

Abre un cuadro de diálogo del sistema para solicitar permiso de usuario para acceder a los datos del sensor.

Sintaxis

HRESULT RequestPermissions(
  [in] HWND              hParent,
  [in] ISensorCollection *pSensors,
  [in] BOOL              fModal
);

Parámetros

[in] hParent

Para Windows 8, si se proporciona un valor hParent, el cuadro de diálogo será modal en la ventana primaria. Si hParent es NULL, el cuadro de diálogo no será modal. El cuadro de diálogo siempre es sincrónico.

Para Windows 7, HWND se controla en una ventana que puede actuar como elemento primario en el cuadro de diálogo permisos. Debe ser NULL si fModal es TRUE.

[in] pSensors

Para Windows 8, este valor no se usa.

Para Windows 7, pSensors es un puntero a la interfaz ISensorCollection que contiene la lista de sensores para los que se solicita el permiso.

[in] fModal

Para Windows 8, este valor no se usa. Consulte hParent para el control de la modalidad.

Para Windows 7, fModal es un BOOL que especifica el modo de cuadro de diálogo. Debe ser FALSE si hParent no es NULL.

Valor Significado
TRUE
Si hParent es NULL, el cuadro de diálogo es modal y, por tanto, tiene el foco exclusivo en Windows hasta que el usuario responda. La llamada es sincrónica. El código de retorno indica la opción del usuario. Consulte Valor devuelto.

Si hParent no es NULL, la llamada es asincrónica y el subproceso que realiza la llamada no esperará a que se cierre el cuadro de diálogo. El código de retorno indica si la llamada se realizó correctamente. Consulte Valor devuelto.

FALSE
El cuadro de diálogo es modeless. La llamada es asincrónica y el subproceso que realiza la llamada no esperará a que se cierre el cuadro de diálogo. El código de retorno indica si la llamada se realizó correctamente. Consulte Valor devuelto.

Se omite el parámetro hParent .

Valor devuelto

En la tabla siguiente se describen los códigos de retorno para los resultados sincrónicos.

Código devuelto Descripción
S_OK
El usuario ha habilitado los sensores.
HRESULT_FROM_WIN32(ERROR_ACCESS_DENIED)
El usuario eligió deshabilitar los sensores.
HRESULT_FROM_WIN32(ERROR_CANCELLED)
El usuario canceló el cuadro de diálogo o rechazó la elevación de permisos para mostrar el cuadro de diálogo.
 

En la tabla siguiente se describen los códigos de retorno para los resultados asincrónicos.

Código devuelto Descripción
S_OK
Todos los sensores de la colección de sensores se mostraron para que el usuario lo habilite. El método se ha llevado a cabo de forma correcta.
S_FALSE
Algunos de los sensores de la colección de sensores se mostraron para que el usuario lo habilite. Es posible que algunos sensores se hayan quitado de la colección; por ejemplo, porque el usuario había elegido previamente mantenerlos deshabilitados. El método se ha llevado a cabo de forma correcta.
E_INVALIDARG
Un argumento no es válido.
E_POINTER
Un puntero es null.
HRESULT_FROM_WIN32(ERROR_ACCESS_DENIED)
El usuario deshabilitó previamente todos los sensores de la colección de sensores. No se mostró el cuadro de diálogo.

Comentarios

Realizar una llamada sincrónica desde el subproceso de la interfaz de usuario (UI) de una aplicación Windows puede bloquear el subproceso de interfaz de usuario y hacer que la aplicación tenga menos capacidad de respuesta. Para evitar esto, no llame a este método desde el subproceso de la interfaz de usuario con fModal establecido en TRUE.

Nota  

Si una aplicación o complemento que se ejecuta en modo protegido, como un objeto auxiliar del explorador (BHO) para Internet Explorer cuando Internet Explorer se ejecuta en modo protegido, llama a RequestPermissions y el usuario elige la opción No habilitar este sensor de ubicación en el cuadro de diálogo, Windows mostrará el cuadro de diálogo de nuevo si requestPermissions lo llama de nuevo el mismo usuario. Las aplicaciones que se ejecutan en modo protegido pueden optar por evitar llamar a RequestPermissions al inicio para que el usuario no esté sujeto a un posible cuadro de diálogo no deseado cada vez que se inicie la aplicación.

 

Ejemplos

El código de ejemplo siguiente solicita permisos para todos los sensores recuperados del administrador de sensores, por tipo, mediante una llamada de método asincrónico. La plataforma solo pedirá al usuario que habilite los sensores que aún no están habilitados. Para determinar si el usuario ha habilitado sensores en este caso, debe controlar el evento ISensorEvents::OnStateChanged . Para obtener ejemplos adicionales que muestran cómo solicitar permisos, consulte Solicitud de permisos de usuario.

// Get the sensor collection.
hr = pSensorManager->GetSensorsByType(SAMPLE_SENSOR_TYPE_TIME, &pSensorColl);

if(SUCCEEDED(hr))
{
    // Request permissions for all sensors
    // in the collection.
    hr = pSensorManager->RequestPermissions(0, pSensorColl, FALSE);
}


Requisitos

Requisito Value
Cliente mínimo compatible Windows 7 [solo aplicaciones de escritorio]
Servidor mínimo compatible No se admite ninguno
Plataforma de destino Windows
Encabezado sensorsapi.h
Library Sensorsapi.lib
Archivo DLL Sensorsapi.dll

Consulte también

ISensorManager

Administración de permisos de usuario

Solicitud de permisos de usuario