in SmvLibrary/JobObject.cs [154:193]
private void completionThreadFunction()
{
bool fDone = false;
while (!fDone)
{
uint dwBytesXferred;
UIntPtr compKey;
IntPtr po;
NativeMethods.GetQueuedCompletionStatus(hiocp, out dwBytesXferred, out compKey, out po, Timeout.Infinite);
int value = (int)compKey.ToUInt32();
switch (value)
{
case COMPKEY_TERMINATE:
{
fDone = true;
break;
}
case COMPKEY_JOBOBJECT:
{
switch (dwBytesXferred)
{
case JOB_OBJECT_MSG_PROCESS_MEMORY_LIMIT:
Log.LogError("Memory limit exceeded");
fDone = true;
break;
case JOB_OBJECT_LIMIT_PROCESS_TIME:
Log.LogError("Time limit exceeded");
fDone = true;
break;
}
break;
}
default:
{
fDone = false;
break;
}
}
}
}