다음을 통해 공유


PFN_WSK_CONTROL_CLIENT 콜백 함수(wsk.h)

WskControlClient 함수는 WSK 클라이언트 개체에 대한 제어 작업을 수행합니다.

통사론

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
)
{...}

매개 변수

[in] Client

WskCaptureProviderNPI 함수의 WskProviderNpi 매개 변수를 통해 반환된 WSK_CLIENT 구조체에 대한 포인터입니다.

[in] ControlCode

수행 중인 컨트롤 작업입니다. WSK 애플리케이션은 다음 제어 코드 중 하나를 지정할 수 있습니다.

WSK_TRANSPORT_LIST_QUERY

사용 가능한 네트워크 전송 목록을 검색합니다.

WSK_TRANSPORT_LIST_CHANGE

사용 가능한 네트워크 전송 목록에 대한 변경 알림을 받습니다.

WSK_CACHE_SD

보안 설명자의 캐시된 복사본을 가져옵니다.

WSK_RELEASE_SD

보안 설명자의 캐시된 복사본을 해제합니다.

WSK_SET_STATIC_EVENT_CALLBACKS

모든 소켓에서 지정된 이벤트 콜백 함수를 자동으로 사용하도록 설정합니다.

WSK_TDI_DEVICENAME_MAPPING

주소 패밀리, 소켓 유형 및 프로토콜의 조합을 TDI 전송의 디바이스 이름에 매핑합니다.

WSK_TDI_BEHAVIOR

WSK 하위 시스템이 네트워크 I/O를 TDI 전송으로 전환할지 여부를 제어합니다.

[in] InputSize

InputBuffer 매개 변수가 가리키는 버퍼의 데이터 바이트 수입니다.

[in, optional] InputBuffer

지정된 컨트롤 작업을 수행하는 데 필요한 입력 데이터를 제공하는 호출자 할당 버퍼입니다. 지정된 제어 작업에 입력 데이터가 필요하지 않은 경우 WSK 애플리케이션은 이 매개 변수를 NULL 설정하고 InputSize 매개 변수를 0으로 설정해야 합니다.

[in] OutputSize

OutputBuffer 매개 변수가 가리키는 버퍼의 크기(바이트)입니다.

[out, optional] OutputBuffer

지정된 컨트롤 작업에서 반환되는 출력 데이터를 수신하는 호출자 할당 버퍼입니다. 지정된 제어 작업에서 출력 데이터가 반환되지 않으면 WSK 애플리케이션은 이 매개 변수를 NULL 설정하고 OutputSize 매개 변수를 0으로 설정해야 합니다.

[out, optional] OutputSizeReturned

OutputBuffer 매개 변수가 가리키는 버퍼에 반환되는 데이터 바이트 수를 수신하는 ULONG 형식 변수에 대한 포인터입니다. WSK 애플리케이션은 다음을 모두 true인 경우를 제외하고 이 포인터를 NULL 설정해야 합니다.

  • Irp 매개 변수는 NULL .
  • 수행 중인 작업은 OutputBuffer 매개 변수가 가리키는 버퍼의 출력 데이터를 반환합니다.
  • 수행 중인 작업에서 반환되는 출력 데이터의 바이트 수는 알 수 없습니다.

[in, out] Irp

WSK 하위 시스템이 컨트롤 작업을 비동기적으로 완료하는 데 사용하는 호출자 할당 IRP에 대한 포인터입니다. WSK 함수와 함께 IRP를 사용하는 방법에 대한 자세한 내용은 Winsock 커널 함수IRP를 사용하는 것을 참조하세요.

이 매개 변수는 수행 중인 특정 클라이언트 제어 작업에 따라 필수이거나 선택 사항이거나 NULL 합니다. 지원되는 각 클라이언트 제어 작업에 대한 이 매개 변수의 요구 사항에 대한 자세한 내용은 WSK 클라이언트 제어 작업 참조하세요.

반환 값

WskControlClient 다음 NTSTATUS 코드 중 하나를 반환합니다.

반환 코드 묘사
STATUS_SUCCESS 제어 작업이 성공적으로 완료되었습니다. WSK 애플리케이션이 Irp 매개 변수에서 IRP에 대한 포인터를 지정하면 IRP가 성공 상태로 완료됩니다.
STATUS_PENDING WSK 하위 시스템이 제어 작업을 즉시 완료할 수 없습니다. WSK 하위 시스템은 컨트롤 작업을 완료한 후 IRP를 완료합니다. 컨트롤 작업의 상태는 IRP의 IoStatus.Status 필드에 반환됩니다.
STATUS_BUFFER_OVERFLOW 출력 버퍼가 반환된 데이터를 포함할 만큼 크지 않습니다. OutputSizeRe가 가리키는 변수는 매개 변수에 필요한 버퍼 크기를 포함합니다.
기타 상태 코드 오류가 발생했습니다. IRP는 실패 상태로 완료됩니다.

발언

각 클라이언트 컨트롤 작업에 입력 및 출력 버퍼를 사용하는 방법에 대한 자세한 내용은 WSK 클라이언트 제어 작업 참조하세요.

WskControlClient 함수가 STATUS_PENDING 반환하는 경우 InputBuffer 매개 변수 또는 OutputBuffer 매개 변수가 가리키는 버퍼는 IRP가 완료될 때까지 유효한 상태를 유지해야 합니다. WSK 애플리케이션이 ExAllocateXxx 함수 중 하나를 사용하여 버퍼를 할당한 경우 IRP가 완료될 때까지 해당 ExFreeXxx 함수를 사용하여 메모리를 해제할 수 없습니다. WSK 애플리케이션이 스택에 버퍼를 할당한 경우 IRP가 완료될 때까지 WskControlClient 함수를 호출하는 함수에서 반환할 수 없습니다.

참고 TDI는 Windows Vista 이후 Microsoft Windows 버전에서 지원되지 않습니다. 대신 Windows 필터링 플랫폼 또는 Winsock 커널 사용합니다.
 

요구 사항

요구
지원되는 최소 클라이언트 Windows Vista 이상 버전의 Windows 운영 체제에서 사용할 수 있습니다.
대상 플랫폼 보편적
헤더 wsk.h(Wsk.h 포함)
IRQL <= DISPATCH_LEVEL

참고 항목

WSK 클라이언트 제어 작업

WSK_CLIENT

WSK_PROVIDER_DISPATCH

WSK_PROVIDER_NPI

WSK_TRANSPORT

WskCaptureProviderNPI