📄 ntinfo.c
字号:
{
printf (T("\r\nStandard -> Daylight: ")
T("%02u-%02u %02u:%02u:%02u [%ls]")
T("\r\nDaylight -> Standard: ")
T("%02u-%02u %02u:%02u:%02u [%ls]")
T("\r\nStandard UTC bias (minutes): %li")
T("\r\nDaylight UTC bias (minutes): %li"),
stzi.tfDaylightDate.Month,
stzi.tfDaylightDate.Day,
stzi.tfDaylightDate.Hour,
stzi.tfDaylightDate.Minute,
stzi.tfDaylightDate.Second,
stzi.awDaylightName,
stzi.tfStandardDate.Month,
stzi.tfStandardDate.Day,
stzi.tfStandardDate.Hour,
stzi.tfStandardDate.Minute,
stzi.tfStandardDate.Second,
stzi.awStandardName,
stzi.lBias + stzi.lStandardBias,
stzi.lBias + stzi.lDaylightBias);
}
dSize = SYSTEM_TIME_INFORMATION_;
if (NtlInfoRead (&sti, &dSize, NTL_INFO_SYSTEM,
SystemTimeInformation, NULL)
== STATUS_SUCCESS)
{
qBias = sti.dExpTimeZoneBias;
NtlTimeUnits (&qBias, TICKS_PER_MINUTE);
printf (T("\r\nCurrent UTC bias (minutes): %li"),
qBias.LowPart);
NtlTimeUnpack (&sti.qKeBootTime, &tf);
printf (T("\r\nSystem startup time (UTC): ")
T("%02u-%02u-%04u %02u:%02u:%02u"),
tf.Month, tf.Day, tf.Year,
tf.Hour, tf.Minute, tf.Second);
NtlTimeInterval
(&sti.dExpTimeZoneBias, &sti.qKeBootTime, &qTime, 1);
NtlTimeUnpack (&qTime, &tf);
printf (T("\r\nSystem startup time (local): ")
T("%02u-%02u-%04u %02u:%02u:%02u"),
tf.Month, tf.Day, tf.Year,
tf.Hour, tf.Minute, tf.Second);
NtlTimeUnpack (&sti.qKeSystemTime, &tf);
printf (T("\r\nCurrent system time (UTC): ")
T("%02u-%02u-%04u %02u:%02u:%02u"),
tf.Month, tf.Day, tf.Year,
tf.Hour, tf.Minute, tf.Second);
NtlTimeInterval
(&sti.dExpTimeZoneBias, &sti.qKeSystemTime, &qTime, 1);
NtlTimeUnpack (&qTime, &tf);
printf (T("\r\nCurrent system time (local): ")
T("%02u-%02u-%04u %02u:%02u:%02u"),
tf.Month, tf.Day, tf.Year,
tf.Hour, tf.Minute, tf.Second);
NtlTimeInterval
(&sti.qKeBootTime, &sti.qKeSystemTime, &qTime, 1);
NtlTimeUnpack (&qTime, &tf);
printf (T("\r\nSystem up time: ")
T("%02u:%02u:%02u"),
tf.Hour, tf.Minute, tf.Second);
}
dSize = SYSTEM_PERFORMANCE_INFORMATION_;
if (NtlInfoRead (&spi, &dSize, NTL_INFO_SYSTEM,
SystemPerformanceInformation, NULL)
== STATUS_SUCCESS)
{
NtlTimeUnpack (&spi.qIdleTime, &tf);
printf (T("\r\nSystem idle time: ")
T("%02u:%02u:%02u"),
tf.Hour, tf.Minute, tf.Second);
}
printf (atNewLine);
return 0;
}
// -----------------------------------------------------------------
DWORD WINAPI Memory (PNTL_CMD_DATA pncd)
{
SYSTEM_BASIC_INFORMATION sbi;
SYSTEM_PERFORMANCE_INFORMATION spi;
SYSTEM_REGISTRY_QUOTA_INFORMATION srqi;
DWORD dSize;
DisplayCommand (pncd);
dSize = SYSTEM_BASIC_INFORMATION_;
if (NtlInfoRead (&sbi, &dSize, NTL_INFO_SYSTEM,
SystemBasicInformation, NULL)
== STATUS_SUCCESS)
{
printf (T("\r\nPage size: %10lu %7lu K")
T("\r\nAllocation granularity: %10lu %7lu K")
T("\r\nPhysical memory total: %10lu %7lu K"),
(sbi.dPageSize),
NtlBytesToKb (sbi.dPageSize),
(sbi.dAllocationGranularity),
NtlBytesToKb (sbi.dAllocationGranularity),
NtlPagesToBytes (sbi.dMmNumberOfPhysicalPages),
NtlPagesToKb (sbi.dMmNumberOfPhysicalPages));
}
dSize = SYSTEM_PERFORMANCE_INFORMATION_;
if (NtlInfoRead (&spi, &dSize, NTL_INFO_SYSTEM,
SystemPerformanceInformation, NULL)
== STATUS_SUCCESS)
{
printf (T("\r\nPhysical memory available: %10lu %7lu K")
T("\r\nCommit charge total: %10lu %7lu K")
T("\r\nCommit charge limit: %10lu %7lu K")
T("\r\nCommit charge peak: %10lu %7lu K")
T("\r\nPool memory paged: %10lu %7lu K")
T("\r\nPool memory non-paged: %10lu %7lu K"),
NtlPagesToBytes (spi.dMmAvailablePages ),
NtlPagesToKb (spi.dMmAvailablePages ),
NtlPagesToBytes (spi.dMmTotalCommittedPages),
NtlPagesToKb (spi.dMmTotalCommittedPages),
NtlPagesToBytes (spi.dMmTotalCommitLimit ),
NtlPagesToKb (spi.dMmTotalCommitLimit ),
NtlPagesToBytes (spi.dMmPeakCommitLimit ),
NtlPagesToKb (spi.dMmPeakCommitLimit ),
NtlPagesToBytes (spi.dPoolPaged ),
NtlPagesToKb (spi.dPoolPaged ),
NtlPagesToBytes (spi.dPoolNonPaged ),
NtlPagesToKb (spi.dPoolNonPaged ),
NtlPagesToBytes (spi.dMmPagedPoolPage ));
}
dSize = SYSTEM_REGISTRY_QUOTA_INFORMATION_;
if (NtlInfoRead (&srqi, &dSize, NTL_INFO_SYSTEM,
SystemRegistryQuotaInformation, NULL)
== STATUS_SUCCESS)
{
printf (T("\r\nRegistry size limit: %10lu %7lu K")
T("\r\nCurrent registry size: %10lu %7lu K")
T("\r\nPaged pool size: %10lu %7lu K"),
(srqi.dCmpGlobalQuota),
NtlBytesToKb (srqi.dCmpGlobalQuota),
(srqi.dCmpGlobalQuotaUsed),
NtlBytesToKb (srqi.dCmpGlobalQuotaUsed),
(srqi.dMmSizeOfPagedPoolInBytes),
NtlBytesToKb (srqi.dMmSizeOfPagedPoolInBytes));
}
printf (atNewLine);
return 0;
}
// -----------------------------------------------------------------
DWORD WINAPI Cache (PNTL_CMD_DATA pncd)
{
SYSTEM_CACHE_INFORMATION sci;
SYSTEM_PERFORMANCE_INFORMATION spi;
DWORD dSize;
DisplayCommand (pncd);
dSize = SYSTEM_CACHE_INFORMATION_;
if (NtlInfoRead (&sci, &dSize, NTL_INFO_SYSTEM,
SystemCacheInformation, NULL)
== STATUS_SUCCESS)
{
printf (T("\r\nFile cache: ")
T("%10lu %7lu K %4lu M")
T("\r\nFile cache peak: ")
T("%10lu %7lu K %4lu M"),
sci.dFileCache,
NtlBytesToKb (sci.dFileCache),
NtlBytesToMb (sci.dFileCache),
sci.dFileCachePeak,
NtlBytesToKb (sci.dFileCachePeak),
NtlBytesToMb (sci.dFileCachePeak));
}
dSize = SYSTEM_PERFORMANCE_INFORMATION_;
if (NtlInfoRead (&spi, &dSize, NTL_INFO_SYSTEM,
SystemPerformanceInformation, NULL)
== STATUS_SUCCESS)
{
printf (T("\r\nSystem cache page: 0x%08lX\r\n")
T("\r\nFast read no wait: %10lu")
T("\r\nFast read wait: %10lu")
T("\r\nFast read resource miss: %10lu")
T("\r\nFast read not possible: %10lu\r\n")
T("\r\nFast MDL read no wait: %10lu")
T("\r\nFast MDL read wait: %10lu")
T("\r\nFast MDL read resource miss: %10lu")
T("\r\nFast MDL read not possible: %10lu\r\n")
T("\r\nMap data no wait: %10lu")
T("\r\nMap data wait: %10lu")
T("\r\nMap data no wait miss: %10lu")
T("\r\nMap data wait miss: %10lu\r\n"),
NtlPagesToBytes (spi.dMmSystemCachePage),
spi.dCcFastReadNoWait,
spi.dCcFastReadWait,
spi.dCcFastReadResourceMiss,
spi.dCcFastReadNotPossible,
spi.dCcFastMdlReadNoWait,
spi.dCcFastMdlReadWait,
spi.dCcFastMdlReadResourceMiss,
spi.dCcFastMdlReadNotPossible,
spi.dCcMapDataNoWait,
spi.dCcMapDataWait,
spi.dCcMapDataNoWaitMiss,
spi.dCcMapDataWaitMiss);
printf (T("\r\nPin mapped data count: %10lu")
T("\r\nPin read no wait: %10lu")
T("\r\nPin read wait: %10lu")
T("\r\nPin read no wait miss: %10lu")
T("\r\nPin read wait miss: %10lu\r\n")
T("\r\nCopy read no wait: %10lu")
T("\r\nCopy read wait: %10lu")
T("\r\nCopy read no wait miss: %10lu")
T("\r\nCopy read wait miss: %10lu\r\n")
T("\r\nMDL read no wait: %10lu")
T("\r\nMDL read wait: %10lu")
T("\r\nMDL read no wait miss: %10lu")
T("\r\nMDL read wait miss: %10lu\r\n")
T("\r\nRead ahead I/Os: %10lu")
T("\r\nLazy write I/Os: %10lu")
T("\r\nLazy write Pages: %10lu")
T("\r\nData flushes: %10lu")
T("\r\nData pages: %10lu"),
spi.dCcPinMappedDataCount,
spi.dCcPinReadNoWait,
spi.dCcPinReadWait,
spi.dCcPinReadNoWaitMiss,
spi.dCcPinReadWaitMiss,
spi.dCcCopyReadNoWait,
spi.dCcCopyReadWait,
spi.dCcCopyReadNoWaitMiss,
spi.dCcCopyReadWaitMiss,
spi.dCcMdlReadNoWait,
spi.dCcMdlReadWait,
spi.dCcMdlReadNoWaitMiss,
spi.dCcMdlReadWaitMiss,
spi.dCcReadAheadIos,
spi.dCcLazyWriteIos,
spi.dCcLazyWritePages,
spi.dCcDataFlushes,
spi.dCcDataPages);
}
printf (atNewLine);
return 0;
}
// -----------------------------------------------------------------
DWORD WINAPI PageFile (PNTL_CMD_DATA pncd)
{
NTL_TABLE nt;
PSYSTEM_PAGE_FILE_INFORMATION pspfi;
DWORD i;
DWORD n = 0;
DisplayCommand (pncd);
if (NtlTablePageFile (&nt) == STATUS_SUCCESS)
{
DisplayHeader (atPageFile, nt.dCount, nt.dData);
printf (T("\r\n")
T(" Total In use Peak Name\r\n"));
DisplaySeparator (NULL, 79, TRUE);
pspfi = NtlTableFirst (&nt);
for (i = 0; i < nt.dCount; i++)
{
printf (T("\r\n%7lu K %7lu K %7lu K \"%ls\""),
NtlPagesToKb (pspfi->dTotal),
NtlPagesToKb (pspfi->dInUse),
NtlPagesToKb (pspfi->dPeak ),
pspfi->usName.Buffer);
n++;
pspfi = NtlTableNext (&nt, pspfi);
}
NtlTableUnload (&nt);
}
else
{
printf (atListError, T("page file"));
}
printf (atNewLine);
DisplaySummary (atSummary, n);
return n;
}
// -----------------------------------------------------------------
DWORD WINAPI Lock (PNTL_CMD_DATA pncd)
{
NTL_TABLE nt;
PSYSTEM_LOCK psl;
DWORD i;
DWORD n = 0;
DisplayCommand (pncd);
if (NtlTableLock (&nt) == STATUS_SUCCESS)
{
DisplayHeader (atLock, nt.dCount, nt.dData);
printf (T("\r\n")
T(" Lock Lock Active ")
T("Contention Shared Exclusive\r\n")
T("List Entry Owner Count ")
T(" Count Waiters Waiters\r\n"));
DisplaySeparator (NULL, 79, TRUE);
psl = NtlTableFirst (&nt);
for (i = 0; i < nt.dCount; i++)
{
if ((pncd->dFlags & NTL_CMD_FLAG_ALL) ||
psl->dActiveCount ||
psl->dContentionCount ||
psl->dNumberOfSharedWaiters ||
psl->dNumberOfExclusiveWaiters)
{
printf (T("\r\n0x%08lX 0x%08lX %10lu ")
T("%10lu %10lu %10lu"),
psl->pEResource,
psl->dOwner,
psl->dActiveCount,
psl->dContentionCount,
psl->dNumberOfSharedWaiters,
psl->dNumberOfExclusiveWaiters);
n++;
}
psl = NtlTableNext (&nt, psl);
}
NtlTableUnload (&nt);
}
else
{
printf (atListError, T("lock"));
}
printf (atNewLine);
DisplaySummary (atSummary, n);
return n;
}
// -----------------------------------------------------------------
DWORD WINAPI Module (PNTL_CMD_DATA pncd)
{
NTL_TABLE nt;
PSYSTEM_MODULE psm;
DWORD i;
DWORD n = 0;
DisplayCommand (pncd);
if (NtlTableModule (&nt, pncd->dFlags & NTL_CMD_FLAG_THIS)
== STATUS_SUCCESS)
{
DisplayHeader (atModule, nt.dCount, nt.dData);
printf (T("\r\n")
T(" ID Rank Address Size Flags ")
T("Name\r\n"));
DisplaySeparator (NULL, 79, TRUE);
psm = NtlTableFirst (&nt);
for (i = 0; i < nt.dCount; i++)
{
if (TestIds (pncd, MAXDWORD, 1,
psm->wId))
{
printf (T("\r\n%4u %4u 0x%08lX %10lu %08lX ")
T("\"%hs\""),
psm->wId,
psm->wRank,
psm->pAddress,
psm->dSize,
psm->dFlags,
psm->abName +
psm->wNameOffset);
n++;
}
psm = NtlTableNext (&nt, psm);
}
NtlTableUnload (&nt);
}
else
{
printf (atListError, T("module"));
}
printf (atNewLine);
DisplaySummary (atSummary, n);
return n;
}
// -----------------------------------------------------------------
DWORD WINAPI Handle (PNTL_CMD_DATA pncd)
{
NTL_TABLE nt;
PSYSTEM_HANDLE psh;
PTBYTE ptName;
DWORD dSize, dMaxSize, i, j;
DWORD n = 0;
DisplayCommand (pncd);
if (NtlTableHandle (&nt) == STATUS_SUCCESS)
{
DisplayHeader (atHandle, nt.dCount, nt.dData);
printf (T("\r\n")
T("PID Type ")
T("Flags Value ObjectBody GrantedAcc\r\n"));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -