한글: https://learn.microsoft.com/ko-kr/windows/win32/fileio/createiocompletionport

영어: https://learn.microsoft.com/en-us/windows/win32/fileio/createiocompletionport

<aside> 💡

CreateIoCompletionPort는 세 가지 고유한 모드에서 사용할 수 있습니다.

HANDLE WINAPI CreateIoCompletionPort(
  _In_     HANDLE    FileHandle,                // 열려 있는 file handle 또는
																							  // INVALID_HANDLE_VALUE이다.
  _In_opt_ HANDLE    ExistingCompletionPort,    // 기존 I/O 완료 포트에 대한
																							  // 핸들이거나 NULL입니다.
  _In_     ULONG_PTR CompletionKey,
  _In_     DWORD     NumberOfConcurrentThreads
);

return이 HANDLE이다. 핸들에 대해 알아보자!

HANDLE 자체는 void* 타입이다.

image.png

여기에 사용된 파일 핸들이라는 용어는 디스크의 파일뿐만 아니라 Overlapped I/O 엔드포인트를 나타내는 시스템 추상화를 의미합니다. 네트워크 엔드포인트, TCP 소켓, 명명된 파이프 및 메일 슬롯과 같은 Overlapped I/O를 지원하는 모든 시스템 개체를 파일 핸들로 사용할 수 있습니다. - CreateIoCompletionPort 명세에서 발췌

예제

Iocp::Iocp(int threadCount)
{
	m_hIocp = CreateIoCompletionPort(INVALID_HANDLE_VALUE, NULL, 0, threadCount);
	m_threadCount = threadCount;
}