PFN_WSK_CONTROL_CLIENT funzione di callback (wsk.h)
La funzione WskControlClient esegue operazioni di controllo in un oggetto client WSK.
Sintassi
PFN_WSK_CONTROL_CLIENT PfnWskControlClient;
NTSTATUS PfnWskControlClient(
[in] PWSK_CLIENT Client,
[in] ULONG ControlCode,
[in] SIZE_T InputSize,
[in, optional] PVOID InputBuffer,
[in] SIZE_T OutputSize,
[out, optional] PVOID OutputBuffer,
[out, optional] SIZE_T *OutputSizeReturned,
[in, out] PIRP Irp
)
{...}
Parametri
[in] Client
Puntatore a una struttura WSK_CLIENT restituita tramite il parametro WskProviderNpi della funzione WskCaptureProviderNPI.
[in] ControlCode
Operazione di controllo eseguita. Un'applicazione WSK può specificare uno dei codici di controllo seguenti:
WSK_TRANSPORT_LIST_QUERY
Recuperare un elenco dei trasporti di rete disponibili.
WSK_TRANSPORT_LIST_CHANGE
Ricevere una notifica di modifica all'elenco dei trasporti di rete disponibili.
WSK_CACHE_SD
Ottenere una copia memorizzata nella cache di un descrittore di sicurezza.
WSK_RELEASE_SD
Rilasciare una copia memorizzata nella cache di un descrittore di sicurezza.
WSK_SET_STATIC_EVENT_CALLBACKS
Abilitare le funzioni di callback degli eventi specificate automaticamente in tutti i socket.
WSK_TDI_DEVICENAME_MAPPING
Eseguire il mapping delle combinazioni di famiglie di indirizzi, tipo socket e protocollo ai nomi dei dispositivi dei trasporti TDI .
WSK_TDI_BEHAVIOR
Controllare se il sottosistema WSK diverte l'I/O di rete ai trasporti TDI .
[in] InputSize
Numero di byte di dati nel buffer a cui fa riferimento il parametro InputBuffer .
[in, optional] InputBuffer
Buffer allocato dal chiamante che fornisce tutti i dati di input necessari per eseguire l'operazione di controllo specificata. Se non sono necessari dati di input per l'operazione di controllo specificata, l'applicazione WSK deve impostare questo parametro su NULL e impostare il parametro InputSize su zero.
[in] OutputSize
Dimensioni, in byte, del buffer a cui punta il parametro OutputBuffer .
[out, optional] OutputBuffer
Buffer allocato dal chiamante che riceve tutti i dati di output restituiti dall'operazione di controllo specificata. Se non vengono restituiti dati di output dall'operazione di controllo specificata, l'applicazione WSK deve impostare questo parametro su NULL e impostare il parametro OutputSize su zero.
[out, optional] OutputSizeReturned
Puntatore a una variabile tipizzata ULONG che riceve il numero di byte di dati restituiti nel buffer a cui fa riferimento il parametro OutputBuffer . Un'applicazione WSK deve impostare questo puntatore su NULL , ad eccezione di quando tutte le operazioni seguenti sono vere:
- Il parametro Irp è NULL.
- L'operazione eseguita restituisce i dati di output nel buffer a cui fa riferimento il parametro OutputBuffer .
- Il numero di byte di dati di output restituiti dall'operazione eseguita è sconosciuto.
[in, out] Irp
Puntatore a un chiamante allocato IRP usato dal sottosistema WSK per completare l'operazione di controllo in modo asincrono. Per altre informazioni sull'uso di IRP con funzioni WSK, vedere Uso di IRP con Funzioni kernel Winsock.
Questo parametro è obbligatorio, è facoltativo o deve essere NULL, a seconda dell'operazione di controllo client specifica eseguita. Per altre informazioni sui requisiti per questo parametro per ognuna delle operazioni di controllo client supportate, vedere Operazioni di controllo client WSK.
Valore restituito
WskControlClient restituisce uno dei codici NTSTATUS seguenti:
Codice restituito | Descrizione |
---|---|
STATUS_SUCCESS | Operazione di controllo completata correttamente. Se l'applicazione WSK ha specificato un puntatore a un'IRP nel parametro IRP, l'IRP verrà completato con lo stato di esito positivo. |
STATUS_PENDING | Il sottosistema WSK non è riuscito a completare immediatamente l'operazione di controllo. Il sottosistema WSK completerà l'IRP dopo aver completato l'operazione di controllo. Lo stato dell'operazione di controllo verrà restituito nel campo IoStatus.Status dell'IRP . |
STATUS_BUFFER_OVERFLOW | Il buffer di output non è abbastanza grande per contenere i dati restituiti. La variabile a cui punta il parametro OutputSizeReturned contiene le dimensioni del buffer necessarie. |
Altri codici di stato | Si è verificato un errore. L'IRP verrà completato con lo stato di errore. |
Commenti
Per altre informazioni sul modo in cui vengono usati i buffer di input e output per ogni operazione di controllo client, vedere Operazioni di controllo client WSK.
Se la funzione WskControlClient restituisce STATUS_PENDING, tutti i buffer a cui punta il parametro InputBuffer o il parametro OutputBuffer devono rimanere validi fino al completamento dell'IRP. Se l'applicazione WSK ha allocato i buffer con una delle funzioni ExAllocateXxx , non può liberare la memoria con la funzione ExFreeXxx corrispondente fino al completamento dell'IRP. Se l'applicazione WSK ha allocato i buffer nello stack, non può restituire dalla funzione che chiama la funzione WskControlClient fino al completamento dell'IRP.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Disponibile in Windows Vista e versioni successive dei sistemi operativi Windows. |
Piattaforma di destinazione | Universale |
Intestazione | wsk.h (include Wsk.h) |
IRQL | <= DISPATCH_LEVEL |