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 출력 버퍼가 반환된 데이터를 포함할 만큼 크지 않습니다. OutputSizeReturned 매개 변수가 가리키는 변수에는 필요한 버퍼 크기가 포함됩니다.
기타 상태 코드 오류가 발생했습니다. 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