Condividi tramite


Funzione WinBioControlUnitPrivileged (winbio.h)

Consente al chiamante di eseguire operazioni di controllo definite dal fornitore con privilegi in un'unità biometrica. A partire da Windows 10, build 1607, questa funzione è disponibile per l'uso con un'immagine per dispositivi mobili. Il client deve chiamare questa funzione per eseguire operazioni del fornitore estese che richiedono diritti di accesso elevati. Se non sono necessari privilegi, il client può chiamare la funzione WinBioControlUnit .

Sintassi

HRESULT WinBioControlUnitPrivileged(
  [in]            WINBIO_SESSION_HANDLE SessionHandle,
  [in]            WINBIO_UNIT_ID        UnitId,
  [in]            WINBIO_COMPONENT      Component,
  [in]            ULONG                 ControlCode,
                  PUCHAR                SendBuffer,
  [in]            SIZE_T                SendBufferSize,
                  PUCHAR                ReceiveBuffer,
  [in]            SIZE_T                ReceiveBufferSize,
                  SIZE_T                *ReceiveDataSize,
  [out, optional] ULONG                 *OperationStatus
);

Parametri

[in] SessionHandle

Valore WINBIO_SESSION_HANDLE che identifica una sessione biometrica aperta. Aprire un handle di sessione sincrono chiamando WinBioOpenSession. Aprire un handle di sessione asincrono chiamando WinBioAsyncOpenSession.

[in] UnitId

Valore WINBIO_UNIT_ID che identifica l'unità biometrica. Questo valore deve corrispondere all'ID unità usato in precedenza nella funzione WinBioLockUnit .

[in] Component

Valore WINBIO_COMPONENT che specifica il componente all'interno dell'unità biometrica che deve eseguire l'operazione. Questo può essere uno dei valori seguenti.

Valore Significato
WINBIO_COMPONENT_SENSOR
Inviare il comando all'adattatore del sensore.
WINBIO_COMPONENT_ENGINE
Inviare il comando all'adattatore del motore.
WINBIO_COMPONENT_STORAGE
Inviare il comando all'adapter di archiviazione.

[in] ControlCode

Codice definito dal fornitore riconosciuto dall'unità biometrica specificata dal parametro UnitId e dall'adattatore specificato dal parametro Component .

SendBuffer

Indirizzo del buffer che contiene le informazioni di controllo da inviare all'adattatore specificato dal parametro Component . Il formato e il contenuto del buffer sono definiti dal fornitore.

[in] SendBufferSize

Dimensioni, in byte, del buffer specificato dal parametro SendBuffer .

ReceiveBuffer

Indirizzo del buffer che riceve informazioni inviate dall'adattatore specificato dal parametro Component . Il formato e il contenuto del buffer sono definiti dal fornitore.

[in] ReceiveBufferSize

Dimensioni, in byte, del buffer specificato dal parametro ReceiveBuffer .

ReceiveDataSize

Puntatore a un valore SIZE_T contenente le dimensioni, in byte, dei dati scritti nel buffer specificato dal parametro ReceiveBuffer .

[out, optional] OperationStatus

Puntatore a un intero contenente un codice di stato definito dal fornitore che specifica il risultato dell'operazione di controllo.

Valore restituito

Se la funzione ha esito positivo, restituisce S_OK. Se la funzione ha esito negativo, restituisce un valore HRESULT che indica l'errore. I valori possibili includono, ma non sono limitati a, quelli indicati nella tabella seguente. Per un elenco di codici di errore comuni, vedere Valori HRESULT comuni.

Codice restituito Descrizione
E_HANDLE
L'handle di sessione non è valido.
E_INVALIDARG
Il valore specificato nel parametro ControlCode non viene riconosciuto.
E_POINTER
I parametri SendBuffer, ReceiveBuffer, ReceiveDataSize, OperationStatus non possono essere NULL.
E_ACCESSDENIED
Il chiamante non dispone dell'autorizzazione per eseguire l'operazione oppure la sessione non è stata aperta usando WINBIO_FLAG_MAINTENANCE.
E_INVALIDARG
Il valore specificato nel parametro ControlCode non viene riconosciuto.
WINBIO_E_LOCK_VIOLATION
L'unità biometrica specificata dal parametro UnitId deve essere bloccata prima di eseguire qualsiasi operazione di controllo.

Commenti

I fornitori che creano plug-in devono decidere quali operazioni estese sono privilegiate e quali sono disponibili per tutti i client. Per eseguire un'operazione con privilegi, l'applicazione client deve chiamare la funzione WinBioControlUnitPrivileged . Windows Biometric Framework consente solo ai client che dispongono dei diritti di accesso appropriati per chiamare questa funzione. Per eseguire un'operazione che non richiede privilegi, il client deve chiamare la funzione WinBioControlUnit .

È necessario chiamare WinBioLockUnit prima di chiamare WinBioControlUnitPrivileged. La funzione WinBioLockUnit crea un'area bloccata in cui è possibile eseguire in modo sicuro le operazioni definite dal fornitore.

Per chiamare correttamente questa funzione, l'handle di sessione deve essere stato aperto specificando WINBIO_FLAG_MAINTENANCE. Solo gli account Administrators e Local System dispongono dei privilegi necessari.

Per usare WinBioControlUnitPrivileged in modo sincrono, chiamare la funzione con un handle di sessione creato chiamando WinBioOpenSession. La funzione blocca finché l'operazione non viene completata o viene rilevato un errore.

Per usare WinBioControlUnitPrivileged in modo asincrono, chiamare la funzione con un handle di sessione creato chiamando WinBioAsyncOpenSession. Il framework alloca una struttura WINBIO_ASYNC_RESULT e la usa per restituire informazioni sull'esito positivo o negativo dell'operazione. La struttura WINBIO_ASYNC_RESULT viene restituita al callback dell'applicazione o alla coda di messaggi dell'applicazione, a seconda del valore impostato nel parametro NotificationMethod della funzione WinBioAsyncOpenSession .

  • Se si sceglie di ricevere avvisi di completamento usando un callback, è necessario implementare una funzione PWINBIO_ASYNC_COMPLETION_CALLBACK e impostare il parametro NotificationMethod su WINBIO_ASYNC_NOTIFY_CALLBACK.
  • Se si sceglie di ricevere avvisi di completamento usando la coda di messaggi dell'applicazione, è necessario impostare il parametro NotificationMethod su WINBIO_ASYNC_NOTIFY_MESSAGE. Il framework restituisce un puntatore WINBIO_ASYNC_RESULT al campo LPARAM del messaggio della finestra.
Per evitare perdite di memoria, è necessario chiamare WinBioFree per rilasciare la struttura WINBIO_ASYNC_RESULT dopo aver completato l'uso.

Requisiti

Requisito Valore
Client minimo supportato Windows 7 [solo app desktop]
Server minimo supportato Windows Server 2008 R2 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione winbio.h (include Winbio.h)
Libreria Winbio.lib
DLL Winbio.dll

Vedi anche

WinBioControlUnit

WinBioLockUnit