BOOL WINAPI GetQueuedCompletionStatus (
_In_ HANDLE CompletionPort,
_Out_ LPDWROD lpNumberOfBytes,
_Out_ PULONG_PTR lpCompletionKey,
_Out_ LPOVERLAPPED *lpOverlapped,
_In_ DWORD dwMilliseconds
);
MSDN 에서 보면,
지정된 I/O 완료 포트에서 I/O 완료 패킷을 큐에서 제거하려고 시도합니다.
큐에 완료 패킷이 없는이 없는 경우 함수는 완료 포트와 관련된 보류중인 입출력 조작이 완료되기를 기다립니다.
CompletionPort : 완료포트의 핸들 .
완료 포트를 만들려면 CreateIOCompletionPort 함수를 사용하세요.
lpNumberOfByte : 입출력 완료 연산의 결과로 전송된 데이터의 크기
lpCompletionKey : 입출력 작업이 완료된 파일 핸들과 관련된 완료 키값을 받는 변수에 대한
포인터
lpOverlapped : 완료된 입출력 조작이 시작될 때 지정된 OVERLAPPED 구조의 주소를 수신하는 변수에 대한 포인터
dwMillisecond : 완료 패킷이 완료 포트에 표시 될 때까지 호출자가 기꺼이 기다리는 시간.
완료 패킷이 지정된 시간 내에 나타나지 않으면 함수는 시간 초과되며 FALSE를 반환하고 *lpOverlapped를 NULL로 설정.
만약 INFINITE로 지정하면 완료 보고가 있을 때까지 영원히 기다린다.
결과 : 실패하면 GetLastError()를 호출
헤더 : WinBase.h
미니필터를 만지다가 , Scanuser가 CreateIoCompletionPort 를 통해 포트를 만들고
Createthread를 통해서 쓰레드를 통해서 입출력완료를 기다리는 함수를 사용하는 것을 알게되었다.
'개발 > Win32' 카테고리의 다른 글
FltRegisterFilter 함수 (0) | 2019.12.26 |
---|---|
GetProcessMemoryInfo 함수 (0) | 2018.02.11 |
PROCESS_MEMORY_COUNTERS_EX 구조체 (0) | 2018.02.11 |
QueryFullProcessImageName 함수 (0) | 2018.02.11 |
OpenProcess 함수 (0) | 2018.02.11 |