Technical Reference > CtAPI Functions > Function Reference > ctGetOverlappedResult

ctGetOverlappedResult

Returns the results of an overlapped operation. The results reported by the ctGetOverlappedResult() function are those of the specified handle's last CTOVERLAPPED operation to which the specified CTOVERLAPPED structure was provided, and for which the operation's results were pending. A pending operation is indicated when the function that started the operation returns FALSE, and the GetLastError function returns ERROR_IO_PENDING. When an I/O operation is pending, the function that started the operation resets the hEvent member of the CTOVERLAPPED structure to the non-signaled state. Then when the pending operation has been completed, the system sets the event object to the signaled state.

If the bWait parameter is TRUE, ctGetOverlappedResult() determines whether the pending operation has been completed by waiting for the event object to be in the signaled state.

Specify a manual-reset event object in the CTOVERLAPPED structure. If an auto-reset event object is used, the event handle needs to not be specified in any other wait operation in the interval between starting the CTOVERLAPPED operation and the call to ctGetOverlappedResult(). For example, the event object is sometimes specified in one of the wait functions to wait for the operation's completion. When the wait function returns, the system sets an auto-reset event's state to non-signaled, and a subsequent call to ctGetOverlappedResult() with the bWait parameter set to TRUE causes the function to be blocked indefinitely.

Syntax

ctGetOverlappedResult(hCTAPI, lpctOverlapped, pBytes, bWait)

hCTAPI

Type: Handle
Input/output: Input
Description: The handle to the CTAPI as returned from ctOpen().

lpctOverlapped

Type: CTOVERLAPPED*
Input/output: Input
Description: Address of the CTOVERLAPPED structure which was used when an overlapped operation was started.

pBytes

Type: DWORD*
Input/output: Input
Description: Address of actual bytes transferred. For the CTAPI this value is undefined.

bWait

Type: BOOL
Input/output: Input
Description: Specifies whether the function waits for the pending overlapped operation to be completed. If TRUE, the function does not return until the operation has been completed. If FALSE and the operation is still pending, the function returns FALSE and the GetLastError function returns ERROR_IO_INCOMPLETE.

Return Value

If the function succeeds, the return value is TRUE. If the function does not succeed, the return value is FALSE. Use GetLastError() to get extended error information.

Related Functions

ctOpen, ctHasOverlappedIoCompleted

Example

DWORD								Bytes;
char sVersion[128];
CTOVERLAPPED ctOverlapped;
ctOverlapped.hEvent = CreateEvent(NULL, TRUE, TRUE, NULL);
ctCicode(hCTAPI, "Version(0)", 0, 0, sVersion, sizeof(sVersion), &ctOverlapped);
//..
// do something else.
//..
// wait for the ctCicode to complete
ctGetOverlappedResult(hCTAPI, &ctOverlapped, &Bytes, TRUE);