Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
La comunicazione spesso comporta grandi quantità di dati o dati di lunghezza sconosciuta. L'invio e la ricezione di dati vengono eseguiti in modo simile o identico in entrambi questi casi. Per gestire la lunghezza sconosciuta e quantità potenzialmente elevate di dati, la comunicazione SSPI viene eseguita usando due strutture, SecBufferDesc e SecBuffer.
Una struttura SecBufferDesc è un contenitore per un array di strutture SecBuffer. Una struttura SecBufferDesc dispone dei membri seguenti:
Una struttura secBuffer contiene i tre membri seguenti:
- Numero di byte nel buffer
- Tipo di informazioni contenute nell'elemento di dati
- I byte stessi
Un intero messaggio SSPI è spesso costituito da una matrice di strutture SecBuffer.
Di seguito sono definiti i tipi di dati del buffer seguenti.
| Tipo di buffer | Significato |
|---|---|
| SECBUFFER_EMPTY (Buffer vuoto) | Non definito, sostituito dalla funzionedel pacchetto di sicurezza |
| SECBUFFER_DATA | Dati dei pacchetti |
| SECBUFFER_TOKEN | Token di sicurezza |
| SECBUFFER_PKG_PARAMS | Parametri specifici del pacchetto |
| SECBUFFER_MISSING | Indicatore dati mancante |
| SECBUFFER_EXTRA | Dati aggiuntivi |
| SECBUFFER_STREAM | Dati del flusso di sicurezza |
| SECBUFFER_STREAM_TRAILER | Trailer della trasmissione di sicurezza |
| SECBUFFER_STREAM_HEADER | Intestazione del flusso di sicurezza |
I tipi di buffer precedenti possono essere combinati usando un'operazione diOR bit per bit con uno dei tipi di buffer seguenti.
| Tipo di buffer | Significato |
|---|---|
| SECBUFFER_ATTRMASK | Mascherare gli attributi di sicurezza separando i flag di attributo dal tipo di buffer. |
| SECBUFFER_READONLY | Il buffer è di sola lettura |
Prima di ogni chiamata a un'API SSPI che richiede un parametro di SecBufferDesc, uno o più elementi SecBuffer matrice vengono dichiarati e inizializzati. Ad esempio, possono essere presenti due buffer di sicurezza: uno contenente i dati dei messaggi di input e l'altro per il token di sicurezza opaco di output restituito dal pacchetto di sicurezza. L'ordine dei buffer di sicurezza nel descrittore del buffer di sicurezza non è importante, ma ogni buffer deve essere contrassegnato con il tipo appropriato. Un tag di sola lettura può essere usato con qualsiasi buffer di input che non deve essere modificato dal pacchetto di sicurezza .
Le dimensioni del buffer di output che si prevede contengano il token di sicurezza sono importanti. Un'applicazione può trovare le dimensioni massime del token per un pacchetto di sicurezza durante l'installazione iniziale. La chiamata a EnumerateSecurityPackages restituisce una matrice di puntatori alle informazioni del pacchetto di sicurezza. La struttura delle informazioni del pacchetto di sicurezza contiene le dimensioni massime del token per ogni pacchetto. Nell'esempio le informazioni si trovano nel membro cbMaxToken della strutturasecPkgInfo. Le stesse informazioni possono essere ottenute in un secondo momento usando QuerySecurityPackageInfo.
L'applicazione inizializza i puntatori e le dimensioni del buffer nella descrizione del buffer per indicare dove sono disponibili i dati del messaggio e altre informazioni.
Per informazioni dettagliate, vedere SecBuffer e SecBufferDesc codice di esempio .