⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 01_9_14_14.asp.html

📁 有用的VC教程,包括编程思想编程技巧程序效率等方面的指导
💻 HTML
📖 第 1 页 / 共 3 页
字号:
    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 + -