Freigeben über


ISensorManager::RequestPermissions-Methode (sensorsapi.h)

Von Bedeutung

Verwenden Sie stattdessen die UWP-Sensor-API .

Die COM-basierte Sensor-API ist veraltet und sollte nicht in neuen Anwendungen verwendet werden. Es sind keine zusätzlichen Features oder Verbesserungen geplant, und der Support wird eingeschränkt.

Öffnet ein Systemdialogfeld, um Benutzerberechtigungen für den Zugriff auf Sensordaten anzufordern.

Syntax

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

Die Parameter

[in] hParent

Wenn für Windows 8 hParent ein Wert bereitgestellt wird, ist das Dialogfeld für das übergeordnete Fenster modal. Wenn hParentNULL ist, ist das Dialogfeld nicht modal. Das Dialogfeld ist immer synchron.

Für Windows 7 wird HWND mit einem Fenster behandelt, das als übergeordnetes Element für das Dialogfeld "Berechtigungen" fungieren kann. Muss NULL sein, wenn "fModal" WAHR ist.

[in] pSensors

Für Windows 8 wird dieser Wert nicht verwendet.

Für Windows 7 ist pSensors ein Zeiger auf die ISensorCollection-Schnittstelle , die die Liste der Sensoren enthält, für die die Berechtigung angefordert wird.

[in] fModal

Für Windows 8 wird dieser Wert nicht verwendet. Informationen zur Steuerung der Modalität finden Sie unter "hParent ".

Für Windows 7 ist fModal ein BOOL , der den Dialogfeldmodus angibt. Muss FALSE sein, wenn hParent ungleich NULL ist.

Wert Bedeutung
STIMMT
Wenn hParentNULL ist, ist das Dialogfeld modal und hat daher den exklusiven Fokus in Windows, bis der Benutzer antwortet. Der Aufruf ist synchron. Der Rückgabecode gibt die Benutzerauswahl an. Siehe Rückgabewert.

Wenn hParent ungleich NULL ist, ist der Aufruf asynchron, und der aufrufende Thread wartet nicht, bis das Dialogfeld geschlossen wird. Der Rückgabecode gibt an, ob der Aufruf erfolgreich war. Siehe Rückgabewert.

FALSCH
Das Dialogfeld ist moduslos. Der Aufruf ist asynchron, und der aufrufende Thread wartet nicht, bis das Dialogfeld geschlossen wird. Der Rückgabecode gibt an, ob der Aufruf erfolgreich war. Siehe Rückgabewert.

Der hParent-Parameter wird ignoriert.

Rückgabewert

In der folgenden Tabelle werden Rückgabecodes für synchrone Ergebnisse beschrieben.

Rückgabecode Description
S_OK
Der Benutzer hat die Sensoren aktiviert.
HRESULT_FROM_WIN32(ERROR_ACCESS_DENIED)
Der Benutzer hat sich entschieden, die Sensoren zu deaktivieren.
HRESULT_FROM_WIN32(ERROR_CANCELLED)
Der Benutzer hat das Dialogfeld abgebrochen oder die Berechtigungserweiterung verweigert, um das Dialogfeld anzuzeigen.
 

In der folgenden Tabelle werden Rückgabecodes für asynchrone Ergebnisse beschrieben.

Rückgabecode Description
S_OK
Alle Sensoren in der Sensorsammlung wurden angezeigt, damit der Benutzer dies aktivieren kann. Die Methode war erfolgreich.
S_FALSE
Einige der Sensoren in der Sensorsammlung wurden angezeigt, damit der Benutzer dies aktivieren kann. Einige Sensoren wurden möglicherweise aus der Sammlung entfernt; Beispielsweise weil sich der Benutzer zuvor dafür entschieden hatte, sie deaktiviert zu lassen. Die Methode war erfolgreich.
E_INVALIDARG
Ein Argument ist ungültig.
E_POINTER
Ein Zeiger ist NULL.
HRESULT_FROM_WIN32(ERROR_ACCESS_DENIED)
Alle Sensoren in der Sensorsammlung wurden zuvor vom Benutzer deaktiviert. Das Dialogfeld wurde nicht angezeigt.

Bemerkungen

Ein synchroner Aufruf aus dem Ui-Thread einer Windows-Anwendung kann den UI-Thread blockieren und die Anwendung weniger reaktionsfähig machen. Um dies zu verhindern, rufen Sie diese Methode nicht aus dem UI-Thread auf, wobei fModal auf TRUE festgelegt ist.

Hinweis  

Wenn eine Anwendung oder ein Plug-In, die im geschützten Modus ausgeführt wird, z. B. ein Browserhilfsobjekt (Browser Helper Object, BHO) für Internet Explorer, wenn Internet Explorer im geschützten Modus ausgeführt wird, aufruft RequestPermissions, und der Benutzer wählt die Option "Diesen Standortsensor nicht aktivieren " im Dialogfeld aus, zeigt Windows das Dialogfeld erneut an, wenn RequestPermissions erneut vomselben Benutzer aufgerufen wird. Anwendungen, die im geschützten Modus ausgeführt werden, können das Aufrufen von RequestPermissions beim Start vermeiden, sodass der Benutzer nicht bei jedem Start der Anwendung einem möglichen unerwünschten Dialogfeld unterliegt.

 

Examples

Der folgende Beispielcode fordert Berechtigungen für alle Sensoren an, die vom Sensor-Manager mithilfe eines asynchronen Methodenaufrufs abgerufen werden. Die Plattform fordert den Benutzer nur auf, Sensoren zu aktivieren, die noch nicht aktiviert sind. Um festzustellen, ob der Benutzer in diesem Fall Sensoren aktiviert hat, müssen Sie das Ereignis "ISensorEvents::OnStateChanged " behandeln. Weitere Beispiele, die veranschaulichen, wie Berechtigungen angefordert werden, finden Sie unter Anfordern von Benutzerberechtigungen.

// 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);
}


Anforderungen

Anforderung Wert
Mindestens unterstützter Client Windows 7 [nur Desktop-Apps]
Mindestanforderungen für unterstützte Server Nicht unterstützt
Zielplattform Fenster
Header sensorsapi.h
Library Sensorsapi.lib
DLL Sensorsapi.dll

Siehe auch

ISensorManager

Verwalten von Benutzerberechtigungen

Anfordern von Benutzerberechtigungen