Структура JOBOBJECT_ASSOCIATE_COMPLETION_PORT


Структура JOBOBJECT_ASSOCIATE_COMPLETION_PORT содержит информацию используемую для объединения порта завершения с заданием. Вы можете связать один порт завершения с заданием. Нет способа завершить ассоциацию, и нет способа связать другой порт с заданием.

Синтаксис

typedef struct _JOBOBJECT_ASSOCIATE_COMPLETION_PORT {
    PVOID CompletionKey;
    HANDLE CompletionPort;
} JOBOBJECT_ASSOCIATE_COMPLETION_PORT, PJOBOBJECT_ASSOCIATE_COMPLETION_PORT;

Члены стуктуры

CompletionKey

Значение, которое используется в параметре dwCompletionKey функции PostQueuedCompletionStatus, когда сообщения отправляются от имени задания.

CompletionPort

Порт завершения, который используется в параметре CompletionPort функции PostQueuedCompletionStatus, когда сообщения отправляются от имени задания.

Замечания

Задание отправляет сообщения порту завершения тогда, когда происходят некоторые события. Все сообщения отправляются непосредственно от задания, как будто задание вызвало функцию PostQueuedCompletionStatus. Поток, контролируя порт завершения, используя функцию GetQueuedCompletionStatus должен выбирать сообщения. Поток получает информацию в параметрах функции GetQueuedCompletionStatus, показанных в нижеследующей таблице.

 

Параметр

Принимаемая информация

lpCompletionKey

Значение, заданное в CompletionKey в ходе ассоциации с портом завершения. Если порт завершения с многочисленными заданиями, параметр CompletionKey должен помочь выяснить вызывающую программу, которой порт завершения посылает сообщения. 

lpOverlapped

Значение, установленное сообщением. Для получения дополнительной информации, см. нижеследующую таблицу кодов сообщений. 

LpNumberOfBytesTransfered

Код сообщения, который указывает, какое произошло событие связанное с заданием. Для получения дополнительной информации, см. нижеследующую таблицу кодов сообщения.

Нижеследующие сообщения могут быть отправлены в порт завершения.

Код сообщения

Описание

JOB_OBJECT_MSG_END_OF_JOB_TIME

Указывает, что параметр JOB_OBJECT_POST_AT_END_OF_JOB действует(будет действительным), и срок окончания задания был достигнут. После отправки этого сообщения, предельный срок отменяется, и процессы задания могут продолжать запускаться.

Значение параметра lpOverlapped - ПУСТО (NULL). 

JOB_OBJECT_MSG_END_OF_PROCESS_TIME

Указывает, что процесс нарушил предельный срок " на процесс ". Система отправляет это сообщение после того, как потребовалось завершение процесса.

Значение параметра lpOverlapped - идентификатор процесса, который вышел за пределы своего ограничения. 

JOB_OBJECT_MSG_ACTIVE_PROCESS_LIMIT

Указывает, что ограничение активного процесса было превышено.

Значение параметра lpOverlapped - ПУСТО (NULL). 

JOB_OBJECT_MSG_ACTIVE_PROCESS_ZERO

Указывает, что счет активного процесса был уменьшен до 0. Например, если задание в настоящее время имеет два активных процесса, система отправляет это сообщение после того, как они оба заканчивают работу.

Значение параметра lpOverlapped - ПУСТО (NULL). 

JOB_OBJECT_MSG_NEW_PROCESS

Указывает, что процесс был добавлен к заданию. Процессы добавляются к заданию, когда порт завершения является также связанным.

Значение lpOverlapped - идентификатор процесса, добавляемого к заданию. 

JOB_OBJECT_MSG_EXIT_PROCESS

Указывает, что процесс, связанный с заданием вышел.

Значение lpOverlapped - идентификатор вышедшего процесса. 

JOB_OBJECT_MSG_ABNORMAL_EXIT_PROCESS

Указывает, что процесс связался с заданием, вышедшим с кодом завершения, который обозначает аварийный выход (см. список, следующий за этой таблицей).

Значение lpOverlapped - идентификатор вышедшого процесса. 

JOB_OBJECT_MSG_PROCESS_MEMORY_LIMIT

Указывает, что процесс, связанный с заданием вышел за пределы своего ограничения памяти (если он действует).

Значение lpOverlapped - идентификатор процесса, который нарушил свое ограничение. Система не отправляет это сообщение, если процесс еще не сообщил о своем идентификаторе процесса. 

JOB_OBJECT_MSG_JOB_MEMORY_LIMIT

Указывает, что процесс, связанный с заданием заставил задание выйти за пределы обширное для заданию ограничение памяти (если оно действует).

Значение lpOverlapped устанавливает идентификатор процесса, который попытался нарушать ограничение. Система не отправляет это сообщение, если процесс еще не сообщил о своем идентификаторе процесса.

Нижеследующие коды завершения обозначают аварийный выход:

STATUS_ACCESS_VIOLATION
STATUS_ARRAY_BOUNDS_EXCEEDED
STATUS_BREAKPOINT
STATUS_CONTROL_C_EXIT
STATUS_DATATYPE_MISALIGNMENT
STATUS_FLOAT_DENORMAL_OPERAND
STATUS_FLOAT_DIVIDE_BY_ZERO
STATUS_FLOAT_INEXACT_RESULT
STATUS_FLOAT_INVALID_OPERATION
STATUS_FLOAT_MULTIPLE_FAULTS
STATUS_FLOAT_MULTIPLE_TRAPS
STATUS_FLOAT_OVERFLOW
STATUS_FLOAT_STACK_CHECK
STATUS_FLOAT_UNDERFLOW

STATUS_GUARD_PAGE_VIOLATION
STATUS_ILLEGAL_INSTRUCTION
STATUS_IN_PAGE_ERROR
STATUS_INVALID_DISPOSITION
STATUS_INTEGER_DIVIDE_BY_ZERO
STATUS_INTEGER_OVERFLOW
STATUS_NONCONTINUABLE_EXCEPTION
STATUS_PRIVILEGED_INSTRUCTION
STATUS_REG_NAT_CONSUMPTION
STATUS_SINGLE_STEP
STATUS_STACK_OVERFLOW

Вы должны быть осторожны при использовании сообщений JOB_OBJECT_MSG_NEW_PROCESS и JOB_OBJECT_MSG_EXIT_PROCESS, поскольку может произойти состязание выполнения. Например, если процессы активно запускаются и выходят в пределах задания, а Вы находитесь в процессе связанном с портом завершения, который держат в готовности к заданию, то можете пропустить сообщения для процессов, состояния которых изменяются в ходе ассоциации с портом завершения. По этой причине, самое лучшее связать порт завершения с заданием, когда задание неактивно.

Смотри также

Краткий обзор Процессы и потоки, Структуры, используемые процессами и потоками, PostQueuedCompletionStatus, QueryInformationJobObject, SetInformationJobObject

 

Размещение и совместимость JOBOBJECT_ASSOCIATE_COMPLETION_PORT

Windows. NET Server

Да

Windows XP

Да

Windows 2000

Да

Windows NT

Нет

Windows Me

Нет

Windows 98

Нет

Windows 95

Нет

Заголовочный файл

 

- объявлено в

Winnt.h

- включено в

Windows.h

Unicode

Нет

Замечания по платформе

Не имеется

 

Назад в оглавление
На главную страницу
На оглавление справки

Hosted by uCoz