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.

Nota TDI non sarà supportato nelle versioni di Microsoft Windows dopo Windows Vista. Usare invece Windows Filtering Platform o Winsock Kernel .
 

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

Vedi anche

Operazioni di controllo client WSK

WSK_CLIENT

WSK_PROVIDER_DISPATCH

WSK_PROVIDER_NPI

WSK_TRANSPORT

WskCaptureProviderNPI