📄 01_9_14_14.asp.html
字号:
return( (PPERF_OBJECT_TYPE)((PBYTE)PerfObj + </td></tr></table><table width=100% ><tr><td class=a14>
PerfObj->TotalByteLength) );</td></tr></table><table width=100% ><tr><td class=a14>
}</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
PPERF_INSTANCE_DEFINITION FirstInstance( PPERF_OBJECT_TYPE PerfObj )</td></tr></table><table width=100% ><tr><td class=a14>
{</td></tr></table><table width=100% ><tr><td class=a14>
return( (PPERF_INSTANCE_DEFINITION)((PBYTE)PerfObj + </td></tr></table><table width=100% ><tr><td class=a14>
PerfObj->DefinitionLength) );</td></tr></table><table width=100% ><tr><td class=a14>
}</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
PPERF_INSTANCE_DEFINITION NextInstance( </td></tr></table><table width=100% ><tr><td class=a14>
PPERF_INSTANCE_DEFINITION PerfInst )</td></tr></table><table width=100% ><tr><td class=a14>
{</td></tr></table><table width=100% ><tr><td class=a14>
PPERF_COUNTER_BLOCK PerfCntrBlk;</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
PerfCntrBlk = (PPERF_COUNTER_BLOCK)((PBYTE)PerfInst + </td></tr></table><table width=100% ><tr><td class=a14>
PerfInst->ByteLength);</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
return( (PPERF_INSTANCE_DEFINITION)((PBYTE)PerfCntrBlk + </td></tr></table><table width=100% ><tr><td class=a14>
PerfCntrBlk->ByteLength) );</td></tr></table><table width=100% ><tr><td class=a14>
}</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
PPERF_COUNTER_DEFINITION FirstCounter( PPERF_OBJECT_TYPE PerfObj )</td></tr></table><table width=100% ><tr><td class=a14>
{</td></tr></table><table width=100% ><tr><td class=a14>
return( (PPERF_COUNTER_DEFINITION) ((PBYTE)PerfObj + </td></tr></table><table width=100% ><tr><td class=a14>
PerfObj->HeaderLength) );</td></tr></table><table width=100% ><tr><td class=a14>
}</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
PPERF_COUNTER_DEFINITION NextCounter( </td></tr></table><table width=100% ><tr><td class=a14>
PPERF_COUNTER_DEFINITION PerfCntr )</td></tr></table><table width=100% ><tr><td class=a14>
{</td></tr></table><table width=100% ><tr><td class=a14>
return( (PPERF_COUNTER_DEFINITION)((PBYTE)PerfCntr + </td></tr></table><table width=100% ><tr><td class=a14>
PerfCntr->ByteLength) );</td></tr></table><table width=100% ><tr><td class=a14>
}</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
/*****************************************************************</td></tr></table><table width=100% ><tr><td class=a14>
* *</td></tr></table><table width=100% ><tr><td class=a14>
* Load the counter and object names from the registry to the *</td></tr></table><table width=100% ><tr><td class=a14>
* global variable lpNamesArray. *</td></tr></table><table width=100% ><tr><td class=a14>
* *</td></tr></table><table width=100% ><tr><td class=a14>
*****************************************************************/</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
void GetNameStrings( )</td></tr></table><table width=100% ><tr><td class=a14>
{</td></tr></table><table width=100% ><tr><td class=a14>
HKEY hKeyPerflib; // handle to registry key</td></tr></table><table width=100% ><tr><td class=a14>
HKEY hKeyPerflib009; // handle to registry key</td></tr></table><table width=100% ><tr><td class=a14>
DWORD dwMaxValueLen; // maximum size of key values</td></tr></table><table width=100% ><tr><td class=a14>
DWORD dwBuffer; // bytes to allocate for buffers</td></tr></table><table width=100% ><tr><td class=a14>
DWORD dwBufferSize; // size of dwBuffer</td></tr></table><table width=100% ><tr><td class=a14>
LPSTR lpCurrentString; // pointer for enumerating data strings</td></tr></table><table width=100% ><tr><td class=a14>
DWORD dwCounter; // current counter index</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
// Get the number of Counter items.</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
RegOpenKeyEx( HKEY_LOCAL_MACHINE,</td></tr></table><table width=100% ><tr><td class=a14>
"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Perflib",</td></tr></table><table width=100% ><tr><td class=a14>
0,</td></tr></table><table width=100% ><tr><td class=a14>
KEY_READ,</td></tr></table><table width=100% ><tr><td class=a14>
&hKeyPerflib);</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
dwBufferSize = sizeof(dwBuffer);</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
RegQueryValueEx( hKeyPerflib,</td></tr></table><table width=100% ><tr><td class=a14>
"Last Counter",</td></tr></table><table width=100% ><tr><td class=a14>
NULL,</td></tr></table><table width=100% ><tr><td class=a14>
NULL,</td></tr></table><table width=100% ><tr><td class=a14>
(LPBYTE) &dwBuffer,</td></tr></table><table width=100% ><tr><td class=a14>
&dwBufferSize );</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
RegCloseKey( hKeyPerflib );</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
// Allocate memory for the names array.</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
lpNamesArray = (char**)malloc( (dwBuffer+1) * sizeof(LPSTR) );</td></tr></table><table width=100% ><tr><td class=a14>
// Open key containing counter and object names.</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
RegOpenKeyEx( HKEY_LOCAL_MACHINE,</td></tr></table><table width=100% ><tr><td class=a14>
"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Perflib\\009",</td></tr></table><table width=100% ><tr><td class=a14>
0,</td></tr></table><table width=100% ><tr><td class=a14>
KEY_READ,</td></tr></table><table width=100% ><tr><td class=a14>
&hKeyPerflib009);</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
// Get the size of the largest value in the key (Counter or Help).</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
RegQueryInfoKey( hKeyPerflib009,</td></tr></table><table width=100% ><tr><td class=a14>
NULL,</td></tr></table><table width=100% ><tr><td class=a14>
NULL,</td></tr></table><table width=100% ><tr><td class=a14>
NULL,</td></tr></table><table width=100% ><tr><td class=a14>
NULL,</td></tr></table><table width=100% ><tr><td class=a14>
NULL,</td></tr></table><table width=100% ><tr><td class=a14>
NULL,</td></tr></table><table width=100% ><tr><td class=a14>
NULL,</td></tr></table><table width=100% ><tr><td class=a14>
NULL,</td></tr></table><table width=100% ><tr><td class=a14>
&dwMaxValueLen,</td></tr></table><table width=100% ><tr><td class=a14>
NULL,</td></tr></table><table width=100% ><tr><td class=a14>
NULL);</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
// Allocate memory for the counter and object names.</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
dwBuffer = dwMaxValueLen + 1;</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
lpNameStrings = (char*)malloc( dwBuffer * sizeof(CHAR) );</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
// Read Counter value.</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
RegQueryValueEx( hKeyPerflib009,</td></tr></table><table width=100% ><tr><td class=a14>
"Counter",</td></tr></table><table width=100% ><tr><td class=a14>
NULL,</td></tr></table><table width=100% ><tr><td class=a14>
NULL,</td></tr></table><table width=100% ><tr><td class=a14>
(BYTE*)lpNameStrings, &dwBuffer );</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
// Load names into an array, by index.</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
int iC=1;</td></tr></table><table width=100% ><tr><td class=a14>
for( lpCurrentString = lpNameStrings; *lpCurrentString;</td></tr></table><table width=100% ><tr><td class=a14>
lpCurrentString += (lstrlen(lpCurrentString)+1) )</td></tr></table><table width=100% ><tr><td class=a14>
{</td></tr></table><table width=100% ><tr><td class=a14>
dwCounter = atol( lpCurrentString );</td></tr></table><table width=100% ><tr><td class=a14>
lpCurrentString += (lstrlen(lpCurrentString)+1);</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
//printf("%d length=%d data=%s\n",iC++,dwCounter,lpCurrentString);</td></tr></table><table width=100% ><tr><td class=a14>
lpNamesArray[dwCounter] = (LPSTR) lpCurrentString;</td></tr></table><table width=100% ><tr><td class=a14>
}</td></tr></table><table width=100% ><tr><td class=a14>
}</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
/*****************************************************************</td></tr></table><table width=100% ><tr><td class=a14>
得到下RAS速度</td></tr></table><table width=100% ><tr><td class=a14>
*****************************************************************/</td></tr></table><table width=100% ><tr><td class=a14>
void GetRASSpeedOn9X(DWORD* pTPS,DWORD* pRPS,DWORD* pTT,DWORD* pRT)</td></tr></table><table width=100% ><tr><td class=a14>
{// under 9x</td></tr></table><table width=100% ><tr><td class=a14>
*pTPS=GetPerSecondXmit();</td></tr></table><table width=100% ><tr><td class=a14>
*pRPS=GetPerSecondRecv();</td></tr></table><table width=100% ><tr><td class=a14>
*pTT=GetTotalXmit();</td></tr></table><table width=100% ><tr><td class=a14>
*pRT=GetTotalRecv();</td></tr></table><table width=100% ><tr><td class=a14>
}</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
void GetRASSpeedOnNT(DWORD* pTPS,DWORD* pRPS,DWORD* pTT,DWORD* pRT)</td></tr></table><table width=100% ><tr><td class=a14>
{// under NT</td></tr></table><table width=100% ><tr><td class=a14>
////参数:每秒发送,每秒接收,总发送,总接受</td></tr></table><table width=100% ><tr><td class=a14>
PPERF_DATA_BLOCK PerfData = NULL;</td></tr></table><table width=100% ><tr><td class=a14>
PPERF_OBJECT_TYPE PerfObj;</td></tr></table><table width=100% ><tr><td class=a14>
PPERF_INSTANCE_DEFINITION PerfInst;</td></tr></table><table width=100% ><tr><td class=a14>
PPERF_COUNTER_DEFINITION PerfCntr, CurCntr;</td></tr></table><table width=100% ><tr><td class=a14>
PPERF_COUNTER_BLOCK PtrToCntr;</td></tr></table><table width=100% ><tr><td class=a14>
DWORD BufferSize = TOTALBYTES;</td></tr></table><table width=100% ><tr><td class=a14>
DWORD i, j, k;</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
// Get the name strings through the registry.</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
//return;</td></tr></table><table width=100% ><tr><td class=a14>
// Allocate the buffer for the performance data.</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
PerfData = (PPERF_DATA_BLOCK) malloc( BufferSize );</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
while( RegQueryValueEx( HKEY_PERFORMANCE_DATA,</td></tr></table><table width=100% ><tr><td class=a14>
"906",//"Global",</td></tr></table><table width=100% ><tr><td class=a14>
NULL,</td></tr></table><table width=100% ><tr><td class=a14>
NULL,</td></tr></table><table width=100% ><tr><td class=a14>
(LPBYTE) PerfData,</td></tr></table><table width=100% ><tr><td class=a14>
&BufferSize ) == ERROR_MORE_DATA )</td></tr></table><table width=100% ><tr><td class=a14>
{</td></tr></table><table width=100% ><tr><td class=a14>
// Get a buffer that is big enough.</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
BufferSize += BYTEINCREMENT;</td></tr></table><table width=100% ><tr><td class=a14>
PerfData = (PPERF_DATA_BLOCK) realloc( PerfData, BufferSize );</td></tr></table><table width=100% ><tr><td class=a14>
}</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
// Get the first object type.</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
PerfObj = FirstObject( PerfData );</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
// Process all objects.</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
//printf("object total=%d\n",PerfData->NumObjectTypes);</td></tr></table><table width=100% ><tr><td class=a14>
//getchar();</td></tr></table><table width=100% ><tr><td class=a14>
for( i=0; i < PerfData->NumObjectTypes; i++ )</td></tr></table><table width=100% ><tr><td class=a14>
{</td></tr></table><table width=100% ><tr><td class=a14>
// Display the object by index and name.</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -