� ����� 8 �� �������� ������������� ������� ��� �������� � ����� ���� ������ ������� ����������� ����� ������������� � ������� ��������������. � ���� �� ��������� ��������������� ������, ������� ���������, ������ �� �������� ������ �������� � ���������������� ������.
�� ��� ������, ��� �������� ������������� ���������� � ���� �������. ��� ������������ ��� ��������� ��������: ���������� ��������� � ������������ �� ����� � ������������� �� ������� � ��������. ��� ������� ������ �������� � Windows ������������� ��������� ���������������� ����������- �������, ���� ����, ��������, ����������� ������ � ��. ��� ��� �������� ������ � ���������� ���. �� ���� �� ������� ������������� �������� ����������� �������, ��� ����� ��������� ������������� ���������� ���� �� ��-��������������� ���, ������� ����� ������� Windows �� ����� ��� ������.
�������� ����, ��� ��������� ��������� � ������������ �������, ������ ���� �� ��-������. �� ��������� ���� � ������ ��������� ���������� ����� �������, ��� ��������� �� ������������ ��������. ������ � Windows 2000 �������� ��� ����� ������� ��� �������� � ������ �������; ��� ������� �������� ��������, ������ ����� � ����� �������� �� ��������. �������, ���������� � ��� ��������� ����� ����� �������� � �� ������� �� ��� ������ �����, �� �������� �� ������ �������� ��, � ��� ��������� ��������� ����� ������� ��� ���������� �������������� ��� �������.
��� ������� ���� ����������� �������� ������ ������� ����������, ����� ������������ ���������� �������, ��� ������������ ��������� �������� ���� ��� ��� ���������� �������� �� ����������� ����-�����.
��� �������������� �� ������ ����������, ������� ����������� � ������� 11-1.
��������� ��������� | ||||
�������� |
�����-������ |
������ �������� ������� | ||
��������� ����� ������� |
������ 1 |
1 |
0 |
0 |
����� ����� ��������� |
��� ������ ������ ������� ������� ���� ������� |
���� ����� ��� ������ 63 �������� ���������� �������� |
�
������� ����������� ������������� ������, �� �� �������� ������ ������
��������� ������� | |
����� ����� ����������� |
��� ���������� �������� |
��� ������� ��� �������� ���������� �������� �������� |
��� ���������� � ������ ������� �������� �� ����-����� � ������� � ������� ������������� ���������� ������� (����� ������) |
��� ������� ������ � ������� ��������� ���� ���������� ������� (����� ������) |
��� ����� ���� |
� "���������"��������� |
WaitFor Multiple ObjectsEx |
� "���������" ��������� |
GetQueued CompletionStatus |
����� ����� ������������ |
��� ��������� ��� ����������� �������", ���� ��� �������� � ������� ���-����� |
��� ������������ ������� ���� |
��� ������� � ������� ���-������ ��� ���������� ������� �� ����- ����� |
��� ����������� ������� � ������� ���������� ��� � ���������� ����� ������ (���� ����� ����� �������, ����� ����� ������� �� ��������� ����� ����������� ����� ��� � 2 ����) |
������� 11-1. ���������� ��������� ���� �������
��� ������������� �������� ������� ��������, ��������� � �������������� � ������� ������������ ���������, �� ���������. ������, ��� ������ ���������� ���� �� ������� ���� �������, ��� �������� ��������� ����� ���� �����������, � ���� ����� �� ��� ����������� �� ��� ����������. ��� ������, �������� �� ���������� ���� ������� ������ �� �����: ������ ������ �������� ���������� ����� ����� ������� � ���������� �������� ������. ��� ���, ������ ��� ������������ ���, ��� ������ �������� ��� ��� � �������
�'���, ������, ����� � ��� �����������, ���������, ��� ��� ��� ��������.
��������, � ��� ���� ��������� ������� � �������� �������, ������� ���� ����� ����� ������. ������� ���, �� ��������� ��������� ����� ��� ��������� ����� ��� ���� ��� ����� �������� ����� ������������� ��� ������ ���������� ����������� �������. ����� �������� ������� � ������-��������� �����������. ���� �� � ��� �� ����������, ��� ������� ��� ����� ����������� � �������������� ����� ���� ��� ���� �������.
������� ���������� ������, �������� ����� ��������:
BOOL QueueUserWorkItem( PTHREAD_START_ROUTINE pfnCallback, PVOID pvContext, ULONG dwFlags);
��� ������� �������� �������� �������" (work item) � ������� ������ � ���� � ��� �� ���������� ����������. ������� ������� � ��� ������ ����� ������� (�� ������� ��������� �������� pfnCallback), ����������� ������������ ��������, pvContext. � �������� ����� �����-�� ����� �� ���� �������� ���������� ����� ���
�����, � ���������� ���� ����� ������� ���� �������. � ���� ������� ��������� ������, �� ���������� ������� ��������� ��, ������ ���� ��������� ��������:
DWORD WINAPI WorkItemFunc(PVOID pvContext);
�������� �� �� ��� ��� ������������� �������� ��������� ��� DWORD, �� �� ��� ���� ��� ������������.
�������� ��������, ��� �� ���� ������� �� ��������� CreateThread ��� ���� ������ �� ���� �������, ������������� ������������ ��� ������ ��������, � � ���� ��� WorkItemFunc ���������� ���� �� ������� ����� ����. ����� ����, ������ ����� �� ������������ ����� ����� ��������� ����������� �������, � ������������ � ���, ��������� ������� � ��������� ����� ������ ���������, ���������� � �������. ���� ���������� ����� ����� ������� �����������, ��� ��� ��� ������ �� �������� �� ������� � ���������� ������ ��� ������� ����������� �������. � ��������� ������ ������� � ������������ ������ ����������, ���������� ������������ ���������� ������� �� ����� ��������� ����� ����������� ����� ��� � 2 ����. �� ���� ����� ������������ ��������� ���������� ����.
������ � ���� ������� ���������� ������� �� ������������: QueueUserWorkItem ��������� ����� �������, ���������� � ����� ��������������� ���������� ������ ��� ������ �������� (�� ����������� � �����-������), � � ����������� �� ������� �������� (���������� ������� ��������� � �������) ����� �������� ��������� �� ����. ����� ����� QueueUserWorkltem ��������� ��������, ������������� ������ PostQueuedCompletionStatus, ��������� ���������� � ������� �������� � ���� �� �������� �����-������. � �������� ����� �����, ������ �� ���� �������, ��������� ���� ��������� (������� GetQueuedCompletionStatus} � ���������� � ����� ���� ���. ����� ���� ��� ��� ���������� ����������, ����� ����� �������� GetQueued ComplettonStatus, ������ ��������� ���������� �������� ��������
��� ��������� �� ������ ��������� ������������ �����-������ � ������ ���, ����� ����� �������� � ������� ������ �� ����-����� � �������� ���������� ���� ������� ��������� ���, �����, ����������� ������ � �������, �� ����������� � �� ��� ���������� ������ �������. ����������� ����-����� � ���� � �������� ���� �������������, �������������� ����������, ��� ��� ��������� ������ ������ ������������ ������� �� ��������� �������� �� ���� �� �����������; ��� �� ��� ������� ������������ �� ��������������� ��� ���������������, ������ ���������� ����� ������.
�� Windows ����������� ���� ����������� �� ������� ������������ �����-�� ����, ���� �����, ������ ����� ������ �������� ����������, �����������, ������ ��� ��� �������� � ������� ������ � ��� ������ �� ������������. � ������ �������� ��� ����, ����� ������� ������������� � ����������� � ����������� �� ��������� ��� ��� �������� �������, ���� ����� �������� ������ � ������������ ��-�� ����� ����� ����, �� ������������ � ���� ������. ��� �������, ��� �� ������ ��, ��� ���� ���� ��, � ����� ����� ����� �����-�� �������.
���� �� ������ ��������� � ������� ������� �������, ������� ������ ������ �� ����������� ����-�����, �� �� ������� �������� ���� ������� ���������� ������ ��� ������ �������� � ���� �������. ��� ������ ���� ��������� ��������� ����� ������. ��������� �������� ����� �������, ������� �� �����������, ���� ���� ���� �� ���� ������ �� ����-�����; ������� ��� ���������� ����, ��������� ������� �� ����������� ����-�����, �� ������ ������������ ������ ����� ��������.
����� �������� ������� ������� ���������� ��������� �����-������, �� ���� �� ��-�������� ������������ �������� QueueUserWorkltem, �� � ��������� dwFlags
������� ������� ���� WT_EXECUTEINIOTHREAD. � ������ �� ������ ��������� � ���� ��������� ���� WT_EXECUTEDEFAULT (0) � �� ���������� ������� �������� ������� ������� ���������� ��������� ������ �������� (�� ��������� � ������-�������).
� Windows ���� ������� (����� RegNotifyChangeKeyValue), ������� ���������� ��������� ��������, �� ����������� � �����-������. ��� ����� �������, ����� ���������� ����� �� ���������� ��������������. � ���� ����� �� ������ ������ ������ ���� WT_EXECUTETNPERSISTENTTHREAD, ������� ���������� ����� ������� ��������� ������������ � ������� ������� ��������� ������ ��� �������� ������ ��. ��� ��� ���� ��������� ���������� ���������, ����������� �������� � �������� ����� ����������� ����� ��������� �� ������ ������������ � ���, ����� ������� ��������� ������ ����������� ������ � �� ����������� ������ ���������� ������ ��� �������.
������ ����������� ��� ������ ����� ������������ ������������ ���������� ������� � ��������� ��������. ���� � ���� ������ ������, � � ������� ��� ������� ���������, �� ������������� ����� ���������� ������ ������ �������� ��� �� ��������, ���� �� ��������� ������� �������� ������ ���� ��������� �����������, �� � ���� ������ ��������� �� ������ ������������ ����������� �������.
�����������, ������� �� ��������� ����, ����� ����������, ��� ����� ���������� ������� ������ �������� ��������, �� ���� ��� ������� ��������, ��� �� ��� ����� ���������� �����, �������� QueueUserWorkltem � ������ WT_EXECUTELONGFUNC TION � �� �������� ��� ������� ����� �����, ���� ��������� ������ ����� � ��� ��� �� ������. ���, ������� � ������� 10 000 ������� ��������� (� ������ WT_EXECUTE LONGFUNCTION), �� �������� 10 000 ����� ������� � ����. ����� �������� �����, ������� �������� ����� �������� QueueUserWorkltem, � ����� ����� ������� ������ ����������� �� ���������� �����.
����������� �� ���������� ������� � ���� ����������� ������, ����� ����� ��� ������ �������� ���������� �������. ����������� ������� �� 10 000 ���������, ��� ������������ 10 001-� � ������ ��� ������������. ��������� ������ � 10 000, �� ��������� ���������� 10001-�� ������, � � ���������� ����� 10 000 ������� ���� ����� ������� ����������������.
��������� ������� ����, ������ ���������, ����� �� �������� ���� �� ������ ��� ��������. ������ ������������ ����������, ���� ������� ������ �������� ��� ����� ���������� ����������� ������, ��������, �������� � ��. � ��� ����������� ����������� �������� ����������. �� ������ ������ ����� �����, ����� ������ ��� ������� ���� ��������� ��� ���. ����� ������ �����������, ���� ������� �������� �������� ���������� � DLL, ������� ����� ���� ����������� ��������� �� ������. �����, ���������� ������� �� ����������� DLL, �������� � ��������� �������. ����� ������������� �������� DLL ��� ������� ������� ��������� � �������, �� ������ ����������� ������� ��� ����� ���������: ��� �������� ������ ������������� ����� ������� QueueUserWorkItem � ����������� ����� ���������� ������� ���� ���� ��������. �������� DLL ��������� ������ ����� ����, ��� ���� ������� ���������.
������ �����-�� �������� ���������� ��������� ����� ������������ ���������� �������. � Windows ������� ������ ���� ���������� ������", ������� ��������� ����� ������������������� �� ��������� ��������� �������. ������ ���������� �� ������� ����� ������ ��� ������ ����������� � ������������� ������� ������, �� ��� ��������� ����, ������� � ������ ����� ��������� ��������. ������ �����
�� ������ ������� ������������ ��������� ������ � ������ ��� ��������������� ��� �� ������ ����� ��������. ������ ����� ��� ������ �������. � �������, ������ ��� ������ ����� �������� ����� �������� ���� �������.
����� �����-�� ������� ������� ���������� ����� ������������ ��������� �������, ������ ����� �������� ������� ��������, ������ �������:
HANDLE CreateTimerQueue();
������� �������� ������������ ����������� ������ ��������. �����������, ��� ���� ����������� ���� ������������� ��������� ��������. ������ ������ ����� ����������� �������� ��������, ������, ��� ����������� ����, ����� ������ �������� ��������, ��� ����� � ���������� ������ �������������� ���������� �� ������� ��� � �. �, �������� ������� ������� ��������� ������ � ��������� ����� ������ ������������. ������ ����� � ������� ������� ������ ���� ���� ������� �������� (���������� ������� ��������� ��������), � ����� ���������� ��������� ����� �� � ������ ���� ���������� ������ ������ ����������� ����� ���������. �� ���� ����� ������ ������� ��� ������� ������ �� ����� ���������� � ��� ��������� ������ ���������.
�� ������ ��������� ������� � �������, ������� �������:
ROOL CreateTimerQueueTimer( PHANDLE phNewTimer, HANDLE hTimerQueue, WAITORTIMERCALLBACK pfnCallback, PVOID pvContext, DWORD dwOueTime, DWORD dwPeriod, ULONG dwFlags);
�� ������ ��������� �� ��������� ��������� �������, � ������� ����� ����� ���� ����� ������. ���� �������� �������, � ���� ��������� ����� �������� NULL � ������ �� �������� CreateTimerQueue, ����� �������� ��������� �������� ������� CreateTimerQueueTimer ������������ ������� �� ��������� � �������� ��������� �������. ��������� pfnCallback � pvContext ��������� �� ���� ������� ��������� ������ � ������, ������������ �� � ������ ������������ �������. �������� dwDue Time ������ ����� ������� ������������, a dwPeriod � ����� ����������� ������� �����. (�������� � dwDueTime �������� �������� ���������� ������� ������� ���� ������� �� ����������� ����������, ��� ������ ������� CreateTimerQueueTimer ������� �� QueueUserWorkItem,) ���� dwPeriod ����� 0, ������ ��������� ���� ���, � ������� ������� ����� ������� � ������� ������ ��������. ��������� ������ ��� ���� ������������ � ��������� phNewTimer.
�������� ����� ������� ��������� ������ ������ ��������� ���:
VOID WINAPI WaitOrTimerCallback( PVOTD pvContext, BOOL fTimerOrWaitFired);
����� ��� ����������, �������� fTimerOrWaitFired ������ ��������� �������� TRUE, ������� ��� �����, ��� ������ ��������.
������ ��������� � ��������� dwFlags ������� CreateTimerQueueTimer. �� ���� ���� �������, ��� ������������ ������� �������, ���������� � �������. �� ���� �� ������� ���� WT_EXECUTEDEFAULT, ���� ������, ����� ������� ������� ��� �� ������� ����� �� ������� ����, �������������� ����������� ��������� ������ ��������, WT_EXECUTEINIOTHREAD � ���� � ������������ ������ ����� ������
����������� ������ �� ����-�����, ��� WT_EXECUTEINPERSISTENTTHREAD � ���� ��������� ������ �������� ���� �� ���������� �������. ��� �������� ��������, ���������� ����������� ������� ���������, ������� ������ ���� WT_EXECUTELONG FUNCTION
�� ������ ������������ ��� ����� ������, WT_EXECUTEINTIMERTHREAD, ���� ��� ��������� � ����� ��������� ����������. ��� ����� �� ������� 11-1, ��� ���� ��� �������� ��������� ��������� ������� ���� ��������� ������� ������������ ������ ���� "��������� ������, �������� �������� ��� ������������, � ������ �� ����� �� ������ ������ ������� CreateTimerQueueTimer, �� ����������� ��� ����� ������, �������� ��� ������ � ������� � ������������� ������ ���� "��������� ������. ����� ����� ����� ���������� ��������� ������� ��������� � ����� ���� ������� �������� ���-������ �� �������. ��������� ���-����� � ����� �������, ����� ������������, ��������� ������� ��������, ��������������� ������ ���� "��� ������ ������", � ����� ������, ��� ������ � ������� ��������, ������� ������ ������� ����������.
����� ����� ��������� ������� ��������� ������: WT_EX�CUTEDEFAULT, WT_EXE CUTEINTOTHREAD, WT_EXECUTEINPERSISTENTTHREAD, WT_EXECUTELONGFUNCTION � WT_EXECUTEINTIMERTHREAD � ������ ��, ��������, ������, ��� ������ ���� WT_EXECUTEINTIMERTHREAD: �� ���������� ����� ���������� ��������� ������� ���������� ������� �������. ���� ����� �������� ��������� �������� ����� ����� �����, �� ����� ������! ���� ����������� ������� �������� ��������, ����� ��� ������� ��������� ������� ����� ������ ���������� �� ����� ��������� ������ ����� ��-�������� ������� ���-������ � ��������������� ������� ������, �� ��� ������� �������� �� ������� ���������� �� ���������� ������� �������. ��� ���, ����� ���������� ��������� ������� ������� ��� ���������� ���� ���������" ����, �� ������������ ���� ������ �������.
����� WT_EXECUTEINIOTHREAD, WT_EXECUTEINPERSISTENTTHREAD � WT_EXE CUTEINTIMERTHREAD �������� ������������������. ���� �� �� ��������� �� ���� �� ���� ������ (��� ����������� WT_EXECUTEDEFAULT), ������� ������� ������ ���� � ������� ����� �� ������� � ���������� ��������� ������ �������� (�� ��� ������� ������-�������), Kp��� ����, WT_EXECUTELONGFUNCTION ������������, ���� ����� ���� WT_EXECUTEINTIMERTHREAD.
�������� ������ ��������� � ������� �������.
BOOL DeleteTimerQueueTimer( HANDLE hTimerQueue, HANDLE hTimer, HANDLE hCompletionEvent);
�� ������ �������� �� ���� ��� ������������� ��������, ���� ��� ��� ������� �� �������� hTimerQueue ��������� �������, � ������� ��������� ������, a hTimer � ��������� ������, ��������� ��������� ������������ CreateTtmetQuetteTtmer ��� �������� �������
��������� ��������, hCompletionEvent, ����������, ����� ������� ��� ������� ���������� �� ���������� �������������� ������� ���������, ������������ � ��� ���� ���� ��������. ���� � ��� �������� INVALID_HANDLE_VALUE, ������� Delete TimerQueueTimer ������ ���������� ������ ����� ��������� ���� ������������ � ������� ���������. �����������, ��� ��� ������: ������ ������ � �������� ������� �� ����������� �� �������� ��������, �� �������� ��������� ��������, ���? �� ����� ��������� ��� ��������� � ���� �� ���������� ��! ��� ������ ����� �����
������� ������, ������ ���� ��� �� �� ������������ ������� �������, ������������ � ������� ������ ��������.
����� ����, ��������� ����� ���������� ��������� �������, ������� �� ������ �� �����-���� �� �������� �� ��������� �������� ����������. ������� ������� ������ �������� � ����, ��� � ������� ����� ������ ���������� ���-�����������. �� ���� ����� ���� �������� �������, �� ��� ������� ��� �� ��� �� � ��������� � ��� � �����.
������ �������� INVALID_HANDLE_VALUE � ��������� hCompletionEvent ����� �������� NULL. ��� ��������� �������, ��� ������ ������� ������� � � ��� ������, ��� �����. � ����� ������ DeleteTimerQueueTimer ���������� ������ ����������, �� �� �� �������, ����� ����� ���������� ��� ��������, ������������ � ������� ���� ��������. �, �������, � ��������� hCompletionEvent ����� �������� ��������� ����� �� ���� "�������. ����� DeleteTimerQueueTimer ���������� ������ ����������, � �� ��� ���������� ��������� ������� ��������� �������, ��� ������ ����� �������� �� ��� �������� �� �������, �� ������ ��� �������� DeleteTimerQueueTimer, �� ��� ��� ������������ � ���, ����� ��� ������� ���������� � ������� ���������, ����� ���� ��������� �������� �����, ��� ��� �������� ��� ����������.
�� ������ �������� ����� ������� � ����������� ������������ ����������� �� �������, ��������� �������:
BOOL ChangeTimerQueueTimer( HANDLF hTimerQueue, HANDLE hTimer, ULONG dwDueTime, ULONG dwPeriod);
�� ���������� ��������� ������� � ������ �������, ������� ���� ���������� ���, � ����� ��������� dwDueTime � dwPeriod (����� ������������ � �������������). ������: ��� ������� �� ������ �� ��� ����������� ������������" ������. �� ���� �� ��������� �� ���������� ��������, ��� ������ �������� ������ ��������� ���� ����.
��� �������� ������� �������� ������������� �������:
BOOL DeleteTimerQueueEx( HANDLE hTimerQueue, HANDLE hCompletionEvent);
��� ��������� ��������� ������������ ������� � ������� ��� ������� � ���, �������� �� ������������� ������ DeleteTimerQueueTimer ��� ������� ������� �� �����������. �������� hCompletionEvent ��������� ������ �� ��������� ������� DeleteTimerQueueTimer, � ��� ������, ���, ��� � � ���������� ������, �� ������ �� ����� � ����������� ��������� ��������, � ������ ���������.
������ ��� ������������� ��������� �������, ��������� �������� ���� ����� ��� �� ��������� �������. ��������� ��������� ������� ������� ������ ���� ���� ������ ������, � ��� �������� ���-������ � �������, � �� ��������� � ��������� ���������. ����� ������, ������������ ������� ��������� ������ ���-������ � ��� ����, � ������� ������� ������� �� ��������. ����� �������� �����������, ��� �� �������� ���� ������� ��������� ������ ����� ����������� � �������� �������� ������. ������ ������ � ����, ��� ��� ��� ���������� � �������������� ��������� �������, � ������, �����-�� ����� ���� �������, ������, ��������� �������������.
���� ��� ��� �� ���������� � �� ������, ����� ����� ����� ��������� � �������, ������, ����� 10 ������ ����� ���������� ��������� �����������, ���������� � ��� �� ������� �������� �������� ���������� ������������� �������. ��� ���������
��� ������, �� � ���������� �������� ��������, � � ����� ��� ��� �� ������� ��������� ChangeTimerQueueTimer ��� ��������������������
��� ���������, �11 TimedMsgBox.exe� (�� ������� �� ��� 11-1), ����������, ��� ������������ ���������� ��������� ���� ������� ��� �������� ����, ����������� �� ������������ ����� �������� ����� � ���������� ������� ������������ ����� ��������� ���� � �������� ���� ��������� ��������� � �������� 11 TimedMsgBox �� �������-�����, ����������� � �����
��� ������� ��������� ����������� ���������� ���������� g_nSecLeft �������� 10 ��a ���������� ����������, ������� ������� (� ��������) ��������� ���� ������� ������������ �� ���������, ���������� � ���� ����� ���������� CreateTtmerQueue Timer, ������������� ��� �� ������������ ����� MsgBoxTimeout ��������������� ��� ����������� ����������, ��������� ���������� � MessageBox � ������� ����, ���������� ����
���� ��������� ����� �� ������������, ���� �� ������� ���� ������ ������� �� ������ ������� MsgBoxTimeout, ������� ������� ��������� ����� ����, ��������� �������� ��������� ���������� g_nSecLeft �� 1 � ��������� ������ � ���� ��� ��� ��� ������ MsgBoxTimeout ���� �������� ���
������� ����� MsgBoxTimeout �������� g_nSecLeft, � ����� MsgBoxTimeout ������ �� EndDialog, ����� ������� ���� ����� ����� ������� MessageBox, ��������� ��� ������ �������, ���������� ����������, � ���������� DeletelimerQueueTtmer, ������ ������ ��� ���������� ������ MsgBoxTimeout � ���������� ����������� ������ ����, ��� ���������� � ���, ��� ������� �������� � ���������� ����� �� �����������
���� �� ������������ ����� ������������� �� ������ ���������, �� ������ ���� ������ �� �� ����, �� � ������ !������
Microsoft ����������, ��� �� ������ ����������� ������ ����������� ������ ��� ����, ����� ����� �� ��� ��� ���� �������� ����. ��� ������ ������ �������������, ����� �������� ����������� � ����� ��������� � �������� ���� �� �������. ���� ����� ������������ ���������� ������ ��������� ���, ��� � ��� ��������� ������� �� �������, ������ ���� ������. ��� ����������� ��������������� ��������� ����� ��� �������, �������� �� �������� ������� ����������� ������, ��� �� �������� ���������, �� � ������ �� �������� �������� � ������� �� ��� ���� ����, �� ������ �� �� �������� ���������� ������, ����������� ����������� ��� �������� � ���� ������� ������ ������� ���� ��������� ������� ����� �������� � ��������.
���� �� �����e ���������������� ������� ������� ���, ����� �� ������������� ��� ������������ ������-���� ������� ����, ����������� ��� ���� ����� ������� ���� �������
BOOL RegisterWaitForSingleOb]ect( PHANOLE phNewWaitObject, HANDLE hObject, WAITORTIMERCALLBACK pfnCallback, PVOIO pvContext, ULONG dwMilliseconrts, ULONG dwFlags);
��� ������� �������� ���� ��������� ���������� ��������� �������� � ���� , �������. �� ��������� ���, ��� ������� ������� ���� ��������� � �������, ��� ����
�� ����������� ������ ���� (�� ������� ��������� bObject) ����� ����, �� ������ ������ ����������� �� �������, �. e. ������� ����� ������� � ������� ����� ������ ������ �����, ���� ���� ������ ���� ��� � �� ����������� (��� ���� ��������� �������� INFINITE � 0.) � �����, ��� ������� ������ �� ������ ��������� ���� ��� WattForSingIeObject (��. ����� 9). ��������������� ������� ������� �� �������� ���������� �������, RegisterWaitForStngleObject ���������� � ��������� phNewWait Object ���������, ���������������� ������ ��������
������ ��������� ��������� �������� ������������������ �������� ����� Wait ForMultipleObjects � ������� ����������� �� �� �����������, ��� � ��� ������� ���� �� ��� ����������� � ���, ��� ������ ������� ��� �� ������ ��������� pa�. ��� ��� �������� �������� DuplicateHandle � �������� �������������� �������� � ������ ���������� ��������� ��� ������ ���� ��������, ��� ������������� ������� WaitForMultipleObjects �������� ����������� �� ����� 64 (MAXIMUM_WAIT_OBJECTS) �������� � ��� �����, ���� ����������� ���������������� � �� ������� ����� 64 ��������? ��������� ��������� �������� ������� ��� ���� �����, ������� ���� �� ����� WaitForMultipleObjects. (�� ����� ���� ����� ����� ��������� �� ������ 63 ����� ��, ������ ��� ������� ���������� ������������ ������ ���� ���������� ������", �������������� ��������)
�� ��������� ������� �������, ������� � ���������, ���������� � ������� � ������� ���������� ��������� ������ �������� (�� ��������� � ������-�������). � �������� ����� ���� �� ��� ������� ���������� � ������� ���� �������, � ���� ��� ������ ���� ��������� ��������.
VOID WINAPI WaitOrTimerCallbackFunc( PVOID pvContext, BOOLEAN fTimerOrWaitFired);
�������� pfTimerOrWaitFired ��������� �������� TRUE, ���� ����� �������� �� �����, ��� FALSE, ���� ������ ����������� ������.
� ��������� dwFlags ������� RegisterWaitForSingleObject ����� �������� ���� WT_EXECUTEINWAITTHREAD, ������� ���������� ��������� ������� �������� ��� ����� � ����� �� ������� ���������� ��������� ��������. ��� �����������, ���� �� ��� ����� ������� ������� �� �������� ������� � ������� ���������� ��������� ������ ��������. �� � �� �� ����� � �������, ��� ��� ���� ����� �� ������ ����� ������������ ������ ��������. ����������� ���� ����, ������ ���� ���� ������� ����������� ������
�� ������ ����� �������� ���� WT_EXECUTEINIOTHREAD, ���� ��� ������� ��� ���� ������ ������ �� ����������� ����-�����, ��� WT_EXECUTEINPERSISTENT THREAD, ���� ��� ����������� �������� � �������������� ��������� ����������� �� ������. � ������ ����������� ���������� ������� �������� �������� ����� ��� ������ ���� WT_EXECUTELONGFUNCTION ���������� ���� ����, ������ ���� ���� ��� ������� ���������� ���������� ��������� �����-������ ��� ������ ��������, � �������, ��������� ��������������� ���������, ������ ��������� � ������, �� ����� ��������� � ���������� ��������� ��������.
� ��������� ����, � ������� �� ������ �����, � WT_EXECUTEONLYONCE. �� ������, �� ������������������ �� �������� ������� ���� "�������" ����� ������ �� � ��������� ��������� �� ��� � ��������� � ���� ���������, ��� �������� ����� ���� ��������� �������� ��������� �������� � ������� ������� ��������. ��� ���, ����� �������� �����, �� ������ ������������ ���� WT_EXECUTEONLYONCE � �� �������� ���� ������� ���������� �������� ������� ����� ������ ��������� ���� ���� ��������.
������ �����������, ��� �� ����� ������ ���� "������� � �����������": ����� ����� ������������ �� ��� �� ������������ � ������� ���������; ��� ���� � ������� ��� ����� ��������������� ������� �������. �� ���� ����� ��� ���������� ����������� ������ � ����� ���� ��� ������������ ��� ���� �������, ����� ������� �����, ���� ������ �� ��������. ���� ��������� ������� ��� ������ �� ����������, �� ������ ����� ��� � �����������. ��� ���������� ���� ��� ������������ ��������, ������� ����������� � ������ WT_EXECUTEONLYONCE. ��� ��� �������� ��������� ��� ����� �������:
BOOL UnregisterWaitEx( HANOLE hWaitHandle, HANDLE hCompletionEvent);
������ �������� ��������� �� ������ �������� (��� ��������� ������������ RegisterWaitForSingleObject), � ������ ����������, ����� ������� ��� ������� ������ ���� � ���������� ���������� �������� � �������. ��� � � DeleteTimerQueueTimer, �� ������ �������� � ���� ��������� NULL (���� ����������� ��� �� ����������), INVA LID_HANULEVALUF, (������� ����������� �� ���������� ��������� ���� ��������� � �������) ��� ��������� �������-������� (������������ � ��������� ��������� ��� ���������� ��������� ���������� ��������). � ����� �� ������������� ����� Unre gisterWaitEx ���������� TRUE, ���� ������� �����, � FALSE � ���� ������ (��� ���� GetLastError ���������� STATUS_PENDING).
� ����� ������ ���������, ��������� �������� INVALIDHANDLE_VALUE. ������� �������� �������� ����������� ���� ����, ���� ���������� ����� � ����������� ��� ������ cc ������ ��������. ����� ������� ������� �������: ������������� ����, ���� � �� ������� ����������, � ������ �����. �� UnregisterWaitEx ����������� ���, ����� ������������� ��������� ��������, ����� ����� ���������� ��������� ��� ����� ��������� ������� �������, � ��� �������� ����� � ����������� ����������� ��� ������ ��������. � ��� ���� ������: �� ���������� ��������� ������� ���� �� ��� ���, ���� �� ������� ��� � �����������. ����� ���������������� ��������� �� ����� � WaitForMultipleObjects, � ������� ���������� ����� ���������� ��������� ��������. ������� ����������� ���������� � �������, � ���� ��������� ������� ��� ��������� ��������.
� ���������- ������� �� ��������� PulseEvent ��� ������������ �������-�������, ������������������� �� ��������. ����� ���������� ��������� �������� ������ ����� ����� ���-�� ����� � ��������� ���� ������� �� PulseEvent. �� ��� �������� ��� ��� �� ���� � PulseEvent ������� �� ����� �� ���� ������������ ��������� �������
��������� �������� ����� ����������������. ���� ��������� ���������� ������ ������� �� ����������� ����-�����, � ��� ����� ��� �������, ������� � �� ���� �����. ��� ��� ��� ��� ������, �� ������� � ���� ���������� ���������� ����� �� �������� �����-������ ���� �� �� ��������� ����������� ����� �������, �� �� ����� �� ���� ���������� �����-������ � ��� �������, ������ �� ���� ����� Kpo �� ����, �� ������� �� ����-������ ��������� �����-������ � ������� �� �� ����� ���� � ������. �� ���� ���������� ����������� �������� �� ����-�����, �������� ��������� �������� �� �������� ��������� � ������� ����� ����������.
��� ���������� �����������, ����������� ���������� ���������� ������� �� �������� ������������ ��������� ������� ���������, � ����� ������, ��� ��� ��
������ � ������� ���� �������. ��������� ����� �� ���������� ���� ������� � ���. ��� ������������� ����������� ������ ����������� ���� ���� ������� ��������� ���������� � ����������� ��� � ����������� ��������� ������ �������� (�� ��� ������ � ������-�������) ������, ��� ��� ������ � ���� ���������� ���� �� ����� ���������� ����� ����������� ���������� � ����������� ��������� ������ ��� �����, �������� �������:
BOOL BindIoCompletionCallback( HANDLE hDevice, POVERLAPPED_COMPLETION_ROUTINE pfnCallback, ULONG dwFlags);
��� ������� ���������� � CreateIoCompletionPort, ��������� e� hDevice � ����� ���� ����������� ����� ����������. �� ����� ����� �����������, ��� � ���������� ��������� ������ �������� ���� ���� �� ���� ����� ���� ����������, �������� ������ � �����������, � ��� ����� ��������������� ������������ ���������� ��� ���, ����� ����-����� �� ���������� �����������, ��������� ���� ��� �����, ����� ������� ���� ������� ��� ��������� ������������ �������. � ������������ ����� ����� ������ ���� ��������� ��������:
VOID WINAPI OverlappedCompletionRoutine( DWORD dwErrorCode, DWORD dwNumberOfBytesTransfe�red, POVERLAPPED pOverlapped);
��������, ��������� OVERLAPPED ���������� �� � BindIoCompletionCallback, � � ������� ���� ReadFile � WriteFile. ������ ��������� ����������� ��� ��������� ��� ��� � �������� �� ����-�����. ����� ��� ���������� ������� �������� ����� ����� ���� � ���� ���������� ��� ����������� �������� ����� OverlappedCompletion Routine � ��������� ����� ������������ ���������� � ��� � ���� ����������, �� ��� �������� �������������� ����������� ���������� � OverlappedCompletion Routine �� ������ ���������� � ������������� ����� � ���������� ��� ������� ��� � ����� ��������� OVERLAPPED.
����� ������, ��� �������� ���������� �������� � ������������ ���������� ���� ������� �������� �� ����-����� � ���� ������ ������ ������ � ����� � ����� ���� ��� ��������� ������ ���� �� ������, ����� ����� �������� ���������� ������� ��������� ������ ������ �� �����������, �������� � ����� ���������� �������� ��� �������. ��� ������ ������� �� ����-����� �� ������ ����������� ��� �������� �� 1, � ��� ���������� � �������������� ���������.
�����-�� ����������� ������ ��� ������� BindloComplettonCallback ������ �� �����������������, ������� �� ������ ���������� 0 � ��������� dwFlags. ��, �� �����, ���� ����, WT_EXECUTEINIOTHREAD, �� ��������� �� ������������. ����� ���������� ������� �� ����-����� �� �������� �� ��������� ���� ������ � ������� ������ �� ������� ���������� ��������� ������ �������� (�� ��������� � ������ �������) ���� OverlappedCompletionRoutine, ��������, ������ ��� ���� ������ �� ����������� ����-�����. ������, ���� ����� �����������, ��� �������� �� ����� �� �� ����-����� ������������� ������������ ����� ����, ���� ������, ��� ������ � ���������� ��������� ������ �������� ��������� � ������������ � ����������� �� ������� ��������. ��� ������ �������� ����� ����� ���� ������, ������� ���� ��������� �������. ���� �� ������� BtndIoCompletionCallback ������������ ���� WT_EXECUTEINIOTHREAD, �� �����, ������ �� ����� ����������, ��� �� ��������� �� � �������� ��������� ������ ���������� ��������� �����-������ � ��������� ���
������ ������� �� ����������� ��� ������� ��������, �� ����� �� �������� ����� �������, �� �������� �������� ��
���� WT_EXECUTEINIOTHREAD ��� ��, �������, ����� ������, �� �� ������ ����� ����������� ��� ��, � ��� � ������ ������� � ����� ������� OverlappedCompletionRoutme ������ �������� QueueUserWorkltem � ������ WT_EXECUTEINIOTHREAD � ��������� ������ ������ (��������, ��� �������, ��������� OVERLAPPED) ������ ������� ������� ���� ��� � �� ���������� ��.