Condividi tramite


Funzione CredUIPromptForWindowsCredentialsA (wincred.h)

La funzione CredUIPromptForWindowsCredentials crea e visualizza una finestra di dialogo configurabile che consente agli utenti di fornire informazioni sulle credenziali usando qualsiasi provider di credenziali installato nel computer locale.

Sintassi

CREDUIAPI DWORD CredUIPromptForWindowsCredentialsA(
  [in, optional]      PCREDUI_INFOA pUiInfo,
  [in]                DWORD         dwAuthError,
  [in, out]           ULONG         *pulAuthPackage,
  [in, optional]      LPCVOID       pvInAuthBuffer,
  [in]                ULONG         ulInAuthBufferSize,
  [out]               LPVOID        *ppvOutAuthBuffer,
  [out]               ULONG         *pulOutAuthBufferSize,
  [in, out, optional] BOOL          *pfSave,
  [in]                DWORD         dwFlags
);

Parametri

[in, optional] pUiInfo

Puntatore a una struttura CREDUI_INFO che contiene informazioni per personalizzare l'aspetto della finestra di dialogo visualizzata da questa funzione.

Se il membro hwndParent della struttura CREDUI_INFO non è NULL, questa funzione visualizza una finestra di dialogo modale centrata sulla finestra padre.

Se il membro hwndParent della struttura CREDUI_INFO è NULL, la funzione visualizza una finestra di dialogo centrata sullo schermo.

Questa funzione ignora il membro hbmBanner della struttura CREDUI_INFO .

[in] dwAuthError

Codice di errore di Windows, definito in Winerror.h, visualizzato nella finestra di dialogo. Se le credenziali raccolte in precedenza non sono valide, il chiamante usa questo parametro per passare il messaggio di errore dall'API che ha raccolto le credenziali (ad esempio, Winlogon) a questa funzione. Il messaggio di errore corrispondente viene formattato e visualizzato nella finestra di dialogo. Impostare il valore di questo parametro su zero per non visualizzare alcun messaggio di errore.

[in, out] pulAuthPackage

In input, il valore di questo parametro viene usato per specificare il pacchetto di autenticazione per cui vengono serializzate le credenziali nel buffer pvInAuthBuffer . Se il valore di pvInAuthBuffer è NULL e il flag CREDUIWIN_AUTHPACKAGE_ONLY viene impostato nel parametro dwFlags , verranno enumerati solo i provider di credenziali in grado di serializzare le credenziali per il pacchetto di autenticazione specificato.

Per ottenere il valore appropriato da usare per questo parametro nell'input, chiamare la funzione LsaLookupAuthenticationPackage e usare il valore del parametro AuthenticationPackage di tale funzione.

Nell'output questo parametro specifica il pacchetto di autenticazione per il quale vengono serializzate le credenziali nel buffer ppvOutAuthBuffer .

[in, optional] pvInAuthBuffer

Puntatore a un BLOB di credenziali usato per popolare i campi delle credenziali nella finestra di dialogo. Impostare il valore di questo parametro su NULL per lasciare vuoti i campi delle credenziali.

[in] ulInAuthBufferSize

Dimensioni, in byte, del buffer pvInAuthBuffer .

[out] ppvOutAuthBuffer

L'indirizzo di un puntatore che, nell'output, specifica il BLOB delle credenziali. Per le credenziali Kerberos, NTLM o Negotiate, chiamare la funzione CredUnPackAuthenticationBuffer per convertire questo BLOB in rappresentazioni di stringa delle credenziali.

Al termine dell'uso del BLOB delle credenziali, cancellarlo dalla memoria chiamando la funzione SecureZeroMemory e liberandola chiamando la funzione CoTaskMemFree .

[out] pulOutAuthBufferSize

Dimensioni, in byte, del buffer ppvOutAuthBuffer .

[in, out, optional] pfSave

Puntatore a un valore booleano che, all'input, specifica se la casella di controllo Salva è selezionata nella finestra di dialogo visualizzata da questa funzione. Nell'output, il valore di questo parametro specifica se la casella di controllo Salva è stata selezionata quando l'utente fa clic sul pulsante Invia nella finestra di dialogo. Impostare questo parametro su NULL per ignorare la casella di controllo Salva .

Questo parametro viene ignorato se il flag CREDUIWIN_CHECKBOX non è impostato nel parametro dwFlags .

[in] dwFlags

Valore che specifica il comportamento per questa funzione. Questo valore può essere una combinazione OR bit per bit di uno o più dei valori seguenti.

Valore Significato
CREDUIWIN_GENERIC
0x1
Il chiamante richiede che il provider di credenziali restituisca il nome utente e la password in testo normale.

Questo valore non può essere combinato con SECURE_PROMPT.

CREDUIWIN_CHECKBOX
0x2
La casella di controllo Salva viene visualizzata nella finestra di dialogo.
CREDUIWIN_AUTHPACKAGE_ONLY
0x10
Devono essere enumerati solo i provider di credenziali che supportano il pacchetto di autenticazione specificato dal parametro pulAuthPackage .

Questo valore non può essere combinato con CREDUIWIN_IN_CRED_ONLY.

CREDUIWIN_IN_CRED_ONLY
0x20
Devono essere enumerate solo le credenziali specificate dal parametro pvInAuthBuffer per il pacchetto di autenticazione specificato dal parametro pulAuthPackage .

Se questo flag è impostato e il parametro pvInAuthBuffer è NULL, la funzione ha esito negativo.

Questo valore non può essere combinato con CREDUIWIN_AUTHPACKAGE_ONLY.

CREDUIWIN_ENUMERATE_ADMINS
0x100
I provider di credenziali devono enumerare solo gli amministratori. Questo valore è destinato solo ai fini del controllo dell'account utente. È consigliabile che i chiamanti esterni non impostino questo flag.
CREDUIWIN_ENUMERATE_CURRENT_USER
0x200
È necessario enumerare solo le credenziali in ingresso per il pacchetto di autenticazione specificato dal parametro pulAuthPackage .
CREDUIWIN_SECURE_PROMPT
0x1000
La finestra di dialogo credenziali deve essere visualizzata sul desktop protetto. Questo valore non può essere combinato con CREDUIWIN_GENERIC.

Windows Vista: Questo valore è supportato a partire da Windows Vista con SP1.

CREDUIWIN_PREPROMPTING
0x2000
La finestra di dialogo credenziali viene richiamata dalla funzione SspiPromptForCredentials e il client viene richiesto prima di un handshake precedente. Se SSPIPFC_NO_CHECKBOX viene passato nel parametro pvInAuthBuffer , il provider di credenziali non deve visualizzare la casella di controllo.

Windows Vista: Questo valore è supportato a partire da Windows Vista con SP1.

0x40000
Il provider di credenziali non comprimerà il nome dell'autorità di AAD. Questa operazione viene applicata solo ai dispositivi aggiunti ad Azure AD.

Windows 10 versione 1607: questo valore è supportato a partire da Windows 10 versione 1607.

CREDUIWIN_PACK_32_WOW
0x10000000
Il provider di credenziali deve allineare il BLOB delle credenziali a cui punta il parametro ppvOutAuthBuffer a un limite a 32 bit, anche se il provider è in esecuzione in un sistema a 64 bit.
0x80000000
Windows Hello credenziali verranno compresse in un buffer di autenticazione della smart card. Questo vale solo per i provider di credenziali viso, impronta digitale e PIN.

Windows 10, versione 1809: questo valore è supportato a partire da Windows 10, versione 1809.

Valore restituito

Se la funzione ha esito positivo, la funzione restituisce ERROR_SUCCESS. Se la funzione viene annullata dall'utente, restituisce ERROR_CANCELLED. Qualsiasi altro valore restituito indica che la funzione non è stata caricata.

Commenti

Questa funzione non salva le credenziali.

Le applicazioni che usano SSPI per autenticare gli utenti non devono chiamare questa funzione. Chiamare invece SspiPromptForCredentials.

Nota

L'intestazione wincred.h definisce CredUIPromptForWindowsCredentials come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias indipendente dalla codifica con il codice che non è indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzioni.

Requisiti

Requisito Valore
Client minimo supportato Windows Vista [solo app desktop]
Server minimo supportato Windows Server 2008 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione wincred.h
Libreria Credui.lib
DLL Credui.dll