estrutura JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION (winnt.h)
Contém informações sobre limites de notificação para um objeto de trabalho. Essa estrutura é usada pelas funções SetInformationJobObject e QueryInformationJobObject com a classe de informação JobObjectNotificationLimitInformation .
Sintaxe
typedef struct _JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION {
DWORD64 IoReadBytesLimit;
DWORD64 IoWriteBytesLimit;
LARGE_INTEGER PerJobUserTimeLimit;
DWORD64 JobMemoryLimit;
JOBOBJECT_RATE_CONTROL_TOLERANCE RateControlTolerance;
JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL RateControlToleranceInterval;
DWORD LimitFlags;
} JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION, *PJOBOBJECT_NOTIFICATION_LIMIT_INFORMATION;
Membros
IoReadBytesLimit
Se o membro LimitFlags especificar JOB_OBJECT_LIMIT_JOB_READ_BYTES, esse membro será o limite de notificação para bytes de E/S totais lidos por todos os processos no trabalho. Caso contrário, esse membro será ignorado.
IoWriteBytesLimit
Se o parâmetro LimitFlags especificar JOB_OBJECT_LIMIT_JOB_WRITE_BYTES, esse membro será o limite de notificação para bytes de E/S totais gravados por todos os processos no trabalho. Caso contrário, esse membro será ignorado.
PerJobUserTimeLimit
Se o parâmetro LimitFlags especificar JOB_OBJECT_LIMIT_JOB_TIME, esse membro será o limite de notificação para o tempo de execução por modo de usuário por trabalho, em tiques de 100 nanossegundos. Caso contrário, esse membro será ignorado.
O sistema adiciona o tempo de execução acumulado dos processos associados ao trabalho a esse limite quando o limite é definido. Por exemplo, se um processo associado ao trabalho já tiver acumulado 5 minutos de tempo de execução no modo de usuário e o limite for definido como 1 minuto, o limite efetivamente imposto será de 6 minutos.
Para especificar PerJobUserTimeLimit como um limite impositivo e encerrar processos em trabalhos que excedem o limite, consulte a estrutura JOBOBJECT_BASIC_LIMIT_INFORMATION .
JobMemoryLimit
Se o parâmetro LimitFlags especificar JOB_OBJECT_LIMIT_JOB_MEMORY, esse membro será o limite de notificação para a memória virtual total que pode ser confirmada por todos os processos no trabalho, em bytes. Caso contrário, esse membro será ignorado.
Para especificar JobMemoryLimit como um limite impositivo e impedir que processos em trabalhos que excedam o limite continuem a confirmar memória, consulte a estrutura JOBOBJECT_EXTENDED_LIMIT_INFORMATION .
RateControlTolerance
Se o parâmetro LimitFlags especificar JOB_OBJECT_LIMIT_RATE_CONTROL, esse membro especificará até que ponto um trabalho pode exceder seus limites de controle de taxa de CPU durante o intervalo especificado pelo membro RateControlToleranceInterval . Caso contrário, esse membro será ignorado.
Esse membro pode ser um dos valores a seguir. Se nenhum valor for especificado, ToleranceHigh será usado.
RateControlToleranceInterval
Se o parâmetro LimitFlags especificar JOB_OBJECT_LIMIT_RATE_CONTROL, esse membro especificará o intervalo durante o qual o uso da CPU de um trabalho é monitorado para determinar se o trabalho excedeu seus limites de controle de taxa de CPU. Caso contrário, esse membro será ignorado.
Esse membro pode ser um dos valores a seguir. Se nenhum valor for especificado, ToleranceIntervalShort será usado.
LimitFlags
Os sinalizadores de limite que estão em vigor. Esse membro é um campo de bits que determina se outros membros da estrutura são usados. Qualquer combinação dos valores a seguir pode ser especificada.
Valor | Significado |
---|---|
|
Estabelece o limite de memória confirmada para a soma de memória confirmada em todo o trabalho para todos os processos associados ao trabalho. O membro JobMemoryLimit contém informações adicionais. |
|
Estabelece o limite de bytes de leitura de E/S para a soma de bytes de E/S em todo o trabalho lida por todos os processos associados ao trabalho. O membro IoReadBytesLimit contém mais informações. |
|
Estabelece o limite de bytes de gravação de E/S para a soma em todo o trabalho de bytes de E/S escritos por todos os processos associados ao trabalho. O membro IoWriteBytesLimit contém mais informações. |
|
Estabelece o limite para o tempo de execução do modo de usuário para o trabalho. O membro PerJobUserTimeLimit contém informações adicionais. |
|
Estabelece o limite de notificação para os limites de controle de taxa de CPU estabelecidos para o trabalho. Os membros RateControlTolerance e RateControlToleranceInterval contêm informações adicionais.
Os limites de controle de taxa de CPU são estabelecidos chamando SetInformationJobObject com a classe de informações JobObjectCpuRateInformationClass . |
Comentários
Quando um limite de notificação é excedido, o sistema envia uma mensagem JOB_OBJECT_MSG_NOTIFICATION_LIMIT para a porta de conclusão de E/S associada ao trabalho. Os processos no trabalho continuam a ser executados e podem continuar a alocar memória ou transmitir bytes de leitura ou gravação além dos limites especificados.
Quando o aplicativo que monitora a porta de conclusão de E/S recebe uma mensagem JOB_OBJECT_MSG_NOTIFICATION_LIMIT, ele deve chamar QueryInformationJobObject com a classe de informação JobObjectLimitViolationInformation . Informações de violação de limite são recebidas em um JOBOBJECT_LIMIT_VIOLATION_STRUCTURE que contém informações sobre todos os limites de notificação que foram excedidos no momento da consulta. O sistema não enviará outro JOB_OBJECT_MSG_NOTIFICATION_LIMIT mensagem até que QueryInformationJobObject seja chamado.
Os limites de controle de taxa de CPU para um trabalho são estabelecidos em uma estrutura JOBOBJECT_CPU_RATE_CONTROL_INFORMATION . Os valores de controle de taxa de CPU na estrutura JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION especificam quanto o trabalho pode exceder seus limites de controle de taxa de CPU estabelecidos antes que a notificação seja enviada.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 8 [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2012 [somente aplicativos da área de trabalho] |
Cabeçalho | winnt.h |
Confira também
JOBOBJECT_CPU_RATE_CONTROL_INFORMATION