📄 qssi.c
字号:
pInfo = GlobalReAlloc (pInfo, Length, GMEM_ZEROINIT);
if (NULL == pInfo)
{
printf ("Could not allocate memory.\n");
return EXIT_FAILURE;
}
}
else
{
PrintStatus (Status);
GlobalFree (pInfo);
return EXIT_FAILURE;
}
}
Status = NtQuerySystemInformation (
18,
pInfo,
Length,
& Length
);
if (!NT_SUCCESS(Status))
{
PrintStatus (Status);
GlobalFree (pInfo);
return EXIT_FAILURE;
}
while (1)
{
wprintf (L" \"%s\":\n", pInfo->PagefileFileName.Buffer);
wprintf (L"\tRelativeOffset %08x\n", pInfo->RelativeOffset);
wprintf (L"\tCurrentSizePages %ld\n", pInfo->CurrentSizePages);
wprintf (L"\tTotalUsedPages %ld\n", pInfo->TotalUsedPages);
wprintf (L"\tPeakUsedPages %ld\n", pInfo->PeakUsedPages);
if (0 == pInfo->RelativeOffset)
{
break;
}
printf ("\n");
(ULONG) pInfo += pInfo->RelativeOffset;
}
DumpData (Length, pInfo);
GlobalFree (pInfo);
return EXIT_SUCCESS;
}
/**********************************************************************
*
* DESCRIPTION
*
* NOTE
* Class 19.
*/
CMD_DEF(19)
{
NTSTATUS Status;
SYSTEM_VDM_INFORMATION Info;
RtlZeroMemory (& Info, sizeof Info);
Status = NtQuerySystemInformation (
19,
& Info,
sizeof Info,
NULL
);
if (!NT_SUCCESS(Status))
{
PrintStatus (Status);
return EXIT_FAILURE;
}
printf (" VdmSegmentNotPresentCount = %ld\n", Info.VdmSegmentNotPresentCount);
printf (" VdmINSWCount = %ld\n", Info.VdmINSWCount);
printf (" VdmESPREFIXCount = %ld\n", Info.VdmESPREFIXCount);
printf (" VdmCSPREFIXCount = %ld\n", Info.VdmCSPREFIXCount);
printf (" VdmSSPREFIXCount = %ld\n", Info.VdmSSPREFIXCount);
printf (" VdmDSPREFIXCount = %ld\n", Info.VdmDSPREFIXCount);
printf (" VdmFSPREFIXCount = %ld\n", Info.VdmFSPREFIXCount);
printf (" VdmGSPREFIXCount = %ld\n", Info.VdmGSPREFIXCount);
printf (" VdmOPER32PREFIXCount = %ld\n", Info.VdmOPER32PREFIXCount);
printf (" VdmADDR32PREFIXCount = %ld\n", Info.VdmADDR32PREFIXCount);
printf (" VdmINSBCount = %ld\n", Info.VdmINSBCount);
printf (" VdmINSWV86Count = %ld\n", Info.VdmINSWV86Count);
printf (" VdmOUTSBCount = %ld\n", Info.VdmOUTSBCount);
printf (" VdmOUTSWCount = %ld\n", Info.VdmOUTSWCount);
printf (" VdmPUSHFCount = %ld\n", Info.VdmPUSHFCount);
printf (" VdmPOPFCount = %ld\n", Info.VdmPOPFCount);
printf (" VdmINTNNCount = %ld\n", Info.VdmINTNNCount);
printf (" VdmINTOCount = %ld\n", Info.VdmINTOCount);
printf (" VdmIRETCount = %ld\n", Info.VdmIRETCount);
printf (" VdmINBIMMCount = %ld\n", Info.VdmINBIMMCount);
printf (" VdmINWIMMCount = %ld\n", Info.VdmINWIMMCount);
printf (" VdmOUTBIMMCount = %ld\n", Info.VdmOUTBIMMCount);
printf (" VdmOUTWIMMCount = %ld\n", Info.VdmOUTWIMMCount);
printf (" VdmINBCount = %ld\n", Info.VdmINBCount);
printf (" VdmINWCount = %ld\n", Info.VdmINWCount);
printf (" VdmOUTBCount = %ld\n", Info.VdmOUTBCount);
printf (" VdmOUTWCount = %ld\n", Info.VdmOUTWCount);
printf (" VdmLOCKPREFIXCount = %ld\n", Info.VdmLOCKPREFIXCount);
printf (" VdmREPNEPREFIXCount = %ld\n", Info.VdmREPNEPREFIXCount);
printf (" VdmREPPREFIXCount = %ld\n", Info.VdmREPPREFIXCount);
printf (" VdmHLTCount = %ld\n", Info.VdmHLTCount);
printf (" VdmCLICount = %ld\n", Info.VdmCLICount);
printf (" VdmSTICount = %ld\n", Info.VdmSTICount);
printf (" VdmBopCount = %ld\n", Info.VdmBopCount);
return EXIT_SUCCESS;
}
/**********************************************************************
*
* DESCRIPTION
*
* NOTE
* Class 20.
*/
CMD_DEF(20)
CMD_NOT_IMPLEMENTED
/**********************************************************************
*
* DESCRIPTION
*
* NOTE
* Class 21.
*/
CMD_DEF(21)
{
NTSTATUS Status;
SYSTEM_CACHE_INFORMATION Si;
RtlZeroMemory (
(PVOID) & Si,
sizeof Si
);
Status = NtQuerySystemInformation (
21,
& Si,
sizeof Si,
0
);
if (!NT_SUCCESS(Status))
{
PrintStatus (Status);
return EXIT_FAILURE;
}
printf ("\tSize:\n");
printf ("\t\tCurrent = %ld\n", Si.CurrentSize);
printf ("\t\tPeak = %ld\n\n", Si.PeakSize);
printf ("\tPageFaults:\n\t\tCount = %ld\n\n", Si.PageFaultCount);
printf ("\tWorking Set:\n");
printf ("\t\tMinimum = %ld\n", Si.MinimumWorkingSet );
printf ("\t\tMaximum = %ld\n", Si.MaximumWorkingSet );
return EXIT_SUCCESS;
}
/**********************************************************************
*
* DESCRIPTION
* Get statistic data about tagged pools. Not implemented in the
* free build.
*
* NOTE
* Class 22.
*/
CMD_DEF(22)
{
NTSTATUS Status;
PSYSTEM_POOL_TAG_INFO pInfo = NULL;
ULONG Length;
ULONG PoolIndex;
pInfo = GlobalAlloc (GMEM_ZEROINIT, BUFFER_SIZE_DEFAULT);
/* FIXME: check pInfo */
Status = NtQuerySystemInformation(
22,
pInfo,
BUFFER_SIZE_DEFAULT,
& Length
);
if (STATUS_SUCCESS != Status)
{
if (STATUS_INFO_LENGTH_MISMATCH == Status)
{
/*
* Allocate buffer
*/
pInfo = GlobalReAlloc (pInfo, Length, GMEM_ZEROINIT);
if (NULL == pInfo)
{
printf ("Could not allocate memory.\n");
return EXIT_FAILURE;
}
}
else
{
PrintStatus (Status);
GlobalFree (pInfo);
return EXIT_FAILURE;
}
}
Status = NtQuerySystemInformation (
22,
pInfo,
Length,
& Length
);
if (!NT_SUCCESS(Status))
{
PrintStatus (Status);
GlobalFree (pInfo);
return EXIT_FAILURE;
}
for ( PoolIndex = 0;
(PoolIndex < pInfo->Count);
PoolIndex ++
)
{
wprintf (L"\t%08x:\n", pInfo->PoolEntry[PoolIndex].Tag);
wprintf (L"\t\tPaged:\t\tNon Paged:\n");
wprintf (
L"\t\tAllocationCount = %ld\tAllocationCount = %ld\n",
pInfo->PoolEntry[PoolIndex].Paged.AllocationCount,
pInfo->PoolEntry[PoolIndex].NonPaged.AllocationCount
);
wprintf (
L"\t\tFreeCount = %ld\tFreeCount = %ld\n",
pInfo->PoolEntry[PoolIndex].Paged.FreeCount,
pInfo->PoolEntry[PoolIndex].NonPaged.FreeCount
);
wprintf (
L"\t\tSizeBytes = %ld\tSizeBytes = %ld\n",
pInfo->PoolEntry[PoolIndex].Paged.SizeBytes,
pInfo->PoolEntry[PoolIndex].NonPaged.SizeBytes
);
}
DumpData (Length, pInfo);
GlobalFree (pInfo);
return EXIT_SUCCESS;
}
/**********************************************************************
*
* DESCRIPTION
*
* NOTE
* Class 23.
*/
CMD_DEF(23)
{
NTSTATUS Status;
SYSTEM_PROCESSOR_SCHEDULE_INFO Info;
RtlZeroMemory (
& Info,
sizeof Info
);
Status = NtQuerySystemInformation (
23,
& Info,
sizeof Info,
NULL
);
if (STATUS_SUCCESS != Status)
{
PrintStatus (Status);
return EXIT_FAILURE;
}
printf ("\tnContextSwitches = %ld\n", Info.nContextSwitches);
printf ("\tnDPCQueued = %ld\n", Info.nDPCQueued);
printf ("\tnDPCRate = %ld\n", Info.nDPCRate);
printf ("\tTimerResolution = %ld\n", Info.TimerResolution);
printf ("\tnDPCBypasses = %ld\n", Info.nDPCBypasses);
printf ("\tnAPCBypasses = %ld\n", Info.nAPCBypasses);
DumpData (sizeof Info, & Info);
return EXIT_SUCCESS;
}
/**********************************************************************
*
* DESCRIPTION
*
* NOTE
* Class 24.
*/
CMD_DEF(24)
{
NTSTATUS Status;
SYSTEM_DPC_INFORMATION Info;
RtlZeroMemory (
& Info,
sizeof Info
);
Status = NtQuerySystemInformation (
24,
& Info,
sizeof Info,
NULL
);
if (STATUS_SUCCESS != Status)
{
PrintStatus (Status);
return EXIT_FAILURE;
}
if (Application.Flag.Verbose)
{
printf ("\tUnused = %ld\n", Info.Unused);
}
printf ("\tKiMaximumDpcQueueDepth = %ld\n", Info.KiMaximumDpcQueueDepth);
printf ("\tKiMinimumDpcRate = %ld\n", Info.KiMinimumDpcRate);
printf ("\tKiAdjustDpcThreshold = %ld\n", Info.KiAdjustDpcThreshold);
printf ("\tKiIdealDpcRate = %ld\n", Info.KiIdealDpcRate);
DumpData (sizeof Info, & Info);
return EXIT_SUCCESS;
}
/**********************************************************************
*
* DESCRIPTION
*
* NOTE
* Class 25.
*/
CMD_DEF(25)
CMD_NOT_IMPLEMENTED
/**********************************************************************
*
* DESCRIPTION
*
* NOTE
* Class 26.
*/
CMD_DEF(26)
CMD_NOT_IMPLEMENTED
/**********************************************************************
*
* DESCRIPTION
*
* NOTE
* Class 27.
*/
CMD_DEF(27)
CMD_NOT_IMPLEMENTED
/**********************************************************************
*
* DESCRIPTION
*
* NOTE
* Class 28.
*/
CMD_DEF(28)
{
NTSTATUS Status = STATUS_SUCCESS;
SYSTEM_QUERY_TIME_ADJUSTMENT Info;
RtlZeroMemory (& Info, sizeof Info);
Status = NtQuerySystemInformation (
28,
& Info,
sizeof Info,
0
);
if (!NT_SUCCESS(Status))
{
PrintStatus (Status);
return EXIT_FAILURE;
}
printf ("\tKeTimeAdjustment = %ld\n", Info.TimeAdjustment);
printf ("\tKeMaximumIncrement = %ld\n", Info.MaximumIncrement);
printf ("\tKeTimeSynchronization = %s\n", TF(Info.TimeSynchronization));
return EXIT_SUCCESS;
}
/**********************************************************************
*
* DESCRIPTION
*
* NOTE
* Class 29.
*/
CMD_DEF(29)
CMD_NOT_IMPLEMENTED
/**********************************************************************
*
* DESCRIPTION
*
* NOTE
* Class 30.
*/
CMD_DEF(30)
CMD_NOT_IMPLEMENTED
/**********************************************************************
*
* DESCRIPTION
*
* NOTE
* Class 31.
*/
CMD_DEF(31)
CMD_NOT_IMPLEMENTED
/**********************************************************************
*
* DESCRIPTION
*
* NOTE
* Class 32.
*/
CMD_DEF(32)
CMD_NOT_IMPLEMENTED
/**********************************************************************
*
* DESCRIPTION
*
* NOTE
* Class 33.
*/
CMD_DEF(33)
CMD_NOT_IMPLEMENTED
/**********************************************************************
*
* DESCRIPTION
*
* NOTE
* Class 34.
*/
CMD_DEF(34)
CMD_NOT_IMPLEMENTED
/**********************************************************************
*
* DESCRIPTION
*
* NOTE
* Class 35.
*/
CMD_DEF(35)
{
NTSTATUS Status;
SYSTEM_DEBUGGER_INFO Info;
RtlZeroMemory (& Info, sizeof Info);
Status = NtQuerySystemInformation (
35,
& Info,
sizeof Info,
NULL
);
if (STATUS_SUCCESS != Status)
{
PrintStatus (Status);
return EXIT_FAILURE;
}
printf ("\tKdDebuggerEnabled = %s\n", TF(Info.KdDebuggerEnabled));
printf ("\tKdDebuggerPresent = %s\n", TF(Info.KdDebuggerPresent));
DumpData (sizeof Info, & Info);
return EXIT_SUCCESS;
}
/**********************************************************************
*
* DESCRIPTION
*
* NOTE
* Class 36.
*/
CMD_DEF(36)
CMD_NOT_IMPLEMENTED
/**********************************************************************
*
* DESCRIPTION
*
* NOTE
* Class 37.
*/
CMD_DEF(37)
{
NTSTATUS Status = STATUS_SUCCESS;
SYSTEM_QUOTA_INFORMATION Info;
RtlZeroMemory (& Info, sizeof Info);
Status = NtQuerySystemInformation (
37,
& Info,
sizeof Info,
0
);
if (!NT_SUCCESS(Status))
{
PrintStatus (Status);
return EXIT_FAILURE;
}
printf ("\tCmpGlobalQuota = %ld\n", Info.CmpGlobalQuota);
printf ("\tCmpGlobalQuotaUsed = %ld\n", Info.CmpGlobalQuotaUsed);
printf ("\tMmSizeofPagedPoolInBytes = %ld\n", Info.MmSizeofPagedPoolInBytes);
return EXIT_SUCCESS;
}
/**********************************************************************
*
* DESCRIPTION
*
* NOTE
* Class 38.
*/
CMD_DEF(38)
CMD_NOT_IMPLEMENTED
/**********************************************************************
*
* DESCRIPTION
*
* NOTE
* Class 39.
*/
CMD_DEF(39)
CMD_NOT_IMPLEMENTED
/**********************************************************************
*
* DESCRIPTION
*
* NOTE
* Class 40.
*/
CMD_DEF(40)
CMD_NOT_IMPLEMENTED
/**********************************************************************
*
* DESCRIPTION
*
* NOTE
* Class 41.
*/
CMD_DEF(41)
CMD_NOT_IMPLEMENTED
/**********************************************************************
*
* DESCRIPTION
*
* NOTE
* Class 42.
*/
CMD_DEF(42)
CMD_NOT_IMPLEMENTED
/**********************************************************************
*
* DESCRIPTION
*
* NOTE
* Class 43.
*/
CMD_DEF(43)
CMD_NOT_IMPLEMENTED
/**********************************************************************
*
* DESCRIPTION
* Dump the system TIME_ZONE_INFORMATION object.
*
* NOTE
* Class 44.
*/
CMD_DEF(44)
{
NTSTATUS Status;
SYSTEM_TIME_ZONE_INFORMATION Tzi;
WCHAR Name [33];
RtlZeroMemory (& Tzi, sizeof Tzi);
Status = NtQuerySystemInformation(
44,
& Tzi,
sizeof Tzi,
0
);
if (!NT_SUCCESS(Status))
{
PrintStatus (Status);
return EXIT_FAILURE;
}
printf (
" Bias........: %ld'\n",
Tzi.Bias /* LONG */
);
printf (" Standard\n");
RtlZeroMemory (
(PVOID) Name,
sizeof Name
);
lstrcpynW (
Name,
Tzi.StandardName, /* WCHAR [32] */
32
);
wprintf (
L"\tName: \"%s\"\n",
Name
);
PrintUtcDateTime (
"\tDate: %s\n",
(PTIME) & Tzi.StandardDate /* SYSTEMTIME */
);
printf ("\tBias: %ld'\n",
Tzi.StandardBias /* LONG */
);
printf (" Daylight\n");
RtlZeroMemory (
(PVOID) Name,
sizeof Name
);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -