다음을 통해 공유


LPFN_RIORESIZECOMPLETIONQUEUE 콜백 함수(mswsock.h)

RIOResizeCompletionQueue 함수는 Winsock 등록 I/O 확장에 사용하기 위해 I/O 완료 큐의 크기를 더 크거나 작게 조정합니다.

구문

LPFN_RIORESIZECOMPLETIONQUEUE LpfnRioresizecompletionqueue;

BOOL LpfnRioresizecompletionqueue(
  RIO_CQ CQ,
  DWORD QueueSize
)
{...}

매개 변수

CQ

크기를 조정할 기존 I/O 완료 큐를 식별하는 설명자입니다.

QueueSize

반환 값

오류가 발생하지 않으면 RIOResizeCompletionQueue 함수는 TRUE를 반환합니다. 그렇지 않으면 FALSE 값이 반환되고 WSAGetLastError 함수를 호출하여 특정 오류 코드를 검색할 수 있습니다.

반환 코드 설명
WSAEFAULT
시스템이 호출에서 포인터 인수를 사용하려는 시도에서 잘못된 포인터 주소를 발견했습니다. 이 오류는 CQ 매개 변수에 지정된 완료 큐에 잘못된 포인터가 포함된 경우 반환됩니다.
WSAEINVAL
잘못된 매개 변수가 함수에 전달되었습니다. CQ 매개 변수가 잘못되면 이 오류가 반환됩니다(예: RIO_INVALID_CQ). QueueSize 매개 변수에 지정된 큐의 크기가 RIO_CQ_MAX_SIZE보다 큰 경우에도 이 오류가 반환됩니다.
WSAENOBUFS
충분한 메모리를 할당할 수 없습니다. QueueSize 매개 변수에 지정된 큐에 메모리를 할당할 수 없는 경우 이 오류가 반환됩니다.
WSAETOOMANYREFS
I/O 완료 큐를 참조하는 작업이 너무 많습니다. 이 I/O 완료 큐의 크기를 더 작게 조정할 수 없습니다.

RIOResizeCompletionQueue 함수는 I/O 완료 큐의 크기를 더 크거나 작게 조정합니다. I/O 완료 큐에 이미 완료가 포함된 경우 해당 완료가 새 완료 큐로 복사됩니다.

I/O 완료 큐에는 완료 큐와 연결된 요청 큐 수와 요청 큐의 송신 및 수신 수에 따라 달라지는 필수 최소 크기가 있습니다. 애플리케이션이 RIOResizeCompletionQueue 함수를 호출하고 I/O 완료 큐의 기존 완료 수에 대해 큐를 너무 작게 설정하려고 하면 호출이 실패하고 큐 크기가 조정되지 않습니다.

참고

지정된 SIO_GET_MULTIPLE_EXTENSION_FUNCTION_POINTER opcode를 사용하여 WSAIoctl 함수를 호출하여 런타임에 RIOResizeCompletionQueue 함수에 대한 함수 포인터를 가져와야 합니다. WSAIoctl 함수에 전달된 입력 버퍼에는 값이 Winsock 등록 I/O 확장 함수를 식별하는 GUID(Globally Unique Identifier)인 WSAID_MULTIPLE_RIO 포함되어야 합니다. 성공하면 WSAIoctl 함수에서 반환된 출력에는 Winsock 등록 I/O 확장 함수에 대한 포인터가 포함된 RIO_EXTENSION_FUNCTION_TABLE 구조체에 대한 포인터가 포함됩니다. SIO_GET_MULTIPLE_EXTENSION_FUNCTION_POINTER IOCTL은 Ws2def.h 헤더 파일에 정의되어 있습니다. WSAID_MULTIPLE_RIO GUID는 Mswsock.h 헤더 파일에 정의되어 있습니다.

 

Windows Phone 8: 이 함수는 Windows Phone 8 이상에서 Windows Phone 스토어 앱에서 지원됩니다.

Windows 8.1Windows Server 2012 R2: 이 함수는 Windows 8.1, Windows Server 2012 R2 이상에서 Windows 스토어 앱에서 지원됩니다.

스레드 보안

여러 스레드가 RIODequeueCompletion 또는 RIOResizeCompletionQueue 함수를 사용하여 동일한 RIO_CQ 액세스하려는 경우 중요한 섹션, 슬림 판독기 작성기 잠금 또는 유사한 상호 제외 메커니즘을 통해 액세스를 조정해야 합니다. 완료 큐가 공유되지 않으면 상호 제외가 필요하지 않습니다.

요구 사항

요구 사항
헤더 mswsock.h