亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? waitchaintraversal.h

?? Windows via C/C++, Fifth Edition圖書源代碼
?? H
字號:
/******************************************************************************
Module:  WaitChainTransversal.h
Details: Helper class for the "Wait Chain Transversal" API
Notices: Copyright (c) 2008 Jeffrey Richter & Christophe Nasarre
******************************************************************************/


#pragma once


///////////////////////////////////////////////////////////////////////////////


#include "CmnHdr.h"     /* See Appendix A. */
#include "Toolhelp.h"
#include <wct.h>
#include <tchar.h>



///////////////////////////////////////////////////////////////////////////////

class CWCT
{
public:
   CWCT();
   ~CWCT();
   
   // Enumerate all the threads running in the given process,
   // and for each, dump the wait chain
   void ParseThreads(DWORD PID);


protected:
   // Implement this method to be called before each thread is analyzed
   // Note: if nodeCount is 0, it was not possible to analyze this thread
   virtual void OnThread(DWORD TID, BOOL bDeadlock, DWORD nodeCount);
   
   // Implement this method to be called for each wait node
   virtual void OnChainNodeInfo(DWORD rootTID, DWORD currentNode, 
      WAITCHAIN_NODE_INFO nodeInfo);

   // Return the number of nodes in the current thread chain
   DWORD GetNodesInChain();

   // Return the PID of the parsed process
   DWORD GetPID();


private:
   void InitCOM();
   void ParseThread(DWORD TID);


private:
   // Handle of the WCT session
   HWCT _hWCTSession;

   // Handle of OLE32.DLL module
   HMODULE _hOLE32DLL;

   DWORD _PID;
   DWORD _dwNodeCount;
};



///////////////////////////////////////////////////////////////////////////////


CWCT::CWCT() {

   _hOLE32DLL = NULL;

    // Open the WCT session in synchronous mode
    _hWCTSession = OpenThreadWaitChainSession(0, NULL);
    if (_hWCTSession == NULL)
      return;

   // It is also possible to detect locks on COM calls
   InitCOM();   
}


void CWCT::InitCOM() {

    PCOGETCALLSTATE       CallStateCallback;
    PCOGETACTIVATIONSTATE ActivationStateCallback;

    // Load OLE32.DLL into the process to be able to get the address 
    // of the two COM functions required by RegisterWaitChainCOMCallback
    _hOLE32DLL = LoadLibrary(TEXT("OLE32.DLL"));

    CallStateCallback = (PCOGETCALLSTATE)
        GetProcAddress(_hOLE32DLL, "CoGetCallState");
    ActivationStateCallback = (PCOGETACTIVATIONSTATE)
        GetProcAddress(_hOLE32DLL, "CoGetActivationState");

    // Pass these COM helper functions to WCT
    RegisterWaitChainCOMCallback(CallStateCallback, ActivationStateCallback);
}


CWCT::~CWCT() {

   // Don't forget to unload OLE32.DLL
   if (_hOLE32DLL != NULL) {
      FreeLibrary(_hOLE32DLL);
   }

   // Don't forget to close the WCT session
   if (_hWCTSession != NULL) {
      CloseThreadWaitChainSession(_hWCTSession);
   }
}


void CWCT::ParseThreads(DWORD PID) {

   _PID = PID;

   // List all threads in the given process
   CToolhelp th(TH32CS_SNAPTHREAD, PID);
   THREADENTRY32 te = { sizeof(te) };
   BOOL fOk = th.ThreadFirst(&te);
   for (; fOk; fOk = th.ThreadNext(&te)) {
      // Only parse threads of the given process
      if (te.th32OwnerProcessID == PID) {
         ParseThread(te.th32ThreadID);
      }
   }
}


void CWCT::ParseThread(DWORD TID) {

   WAITCHAIN_NODE_INFO  chain[WCT_MAX_NODE_COUNT];
   DWORD                dwNodesInChain;
   BOOL                 bDeadlock;

   dwNodesInChain = WCT_MAX_NODE_COUNT;

   // Get the chain for the current thread
   if (!GetThreadWaitChain(_hWCTSession, NULL, WCTP_GETINFO_ALL_FLAGS,
         TID, &dwNodesInChain, chain, &bDeadlock)) {

      _dwNodeCount = 0;
      OnThread(TID, FALSE, 0);
      return;
   }

   // Start the chain processing for the current thread
   _dwNodeCount = min(dwNodesInChain, WCT_MAX_NODE_COUNT);
   OnThread(TID, bDeadlock, dwNodesInChain);

   // For each node in the chain, call the virtual method with details
   for (
      DWORD current = 0; 
      current < min(dwNodesInChain, WCT_MAX_NODE_COUNT); 
      current++
      ) {
      OnChainNodeInfo(TID, current, chain[current]);
   }
}


DWORD CWCT::GetNodesInChain() { 

   return(_dwNodeCount); 
}


DWORD CWCT::GetPID() {

   return(_PID);
}


void CWCT::OnThread(DWORD TID, BOOL bDeadlock, DWORD nodeCount) {
   
   // Virtual method to be implemented by derived classes
}


void CWCT::OnChainNodeInfo(DWORD rootTID, DWORD currentNode, 
   WAITCHAIN_NODE_INFO nodeInfo) {

   // Virtual method to be implemented by derived classes
}



//////////////////////////////// End of File //////////////////////////////////

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人aa视频在线观看| 欧美日韩一区二区电影| 欧美精品一区二区三区一线天视频| 国产精品久久久久久妇女6080| 黑人巨大精品欧美一区| 国产精品人人做人人爽人人添| 久草热8精品视频在线观看| 91成人国产精品| 精品无人码麻豆乱码1区2区| 国产精品久久久久久久久久久免费看| 成人免费不卡视频| 亚洲人成精品久久久久久 | 制服丝袜成人动漫| 亚洲国产日产av| 欧美电影免费观看高清完整版| 国产综合久久久久久鬼色| 国产欧美综合在线| 欧美xxxx在线观看| 国产不卡在线播放| 久久精品人人爽人人爽| 国产成人鲁色资源国产91色综| 亚洲综合一区二区三区| 日韩精品一区二区三区中文不卡 | 盗摄精品av一区二区三区| 亚洲国产精品99久久久久久久久 | 精品区一区二区| 欧美猛男超大videosgay| 激情综合五月婷婷| 18欧美亚洲精品| 国产人成一区二区三区影院| 精品国产成人在线影院| 色狠狠桃花综合| 美日韩黄色大片| 亚洲成人在线免费| 国产精品无圣光一区二区| 精品国产一区二区在线观看| 97se亚洲国产综合在线| 久久疯狂做爰流白浆xx| 日韩va亚洲va欧美va久久| 成人欧美一区二区三区白人| 精品成人一区二区| 日韩午夜中文字幕| 午夜精品福利一区二区蜜股av| 久久蜜臀精品av| 337p日本欧洲亚洲大胆色噜噜| 欧美日韩三级视频| av电影在线观看一区| 色综合久久88色综合天天免费| 国产精品99久久久久久有的能看| 日本在线播放一区二区三区| 亚洲1区2区3区4区| 成人蜜臀av电影| 成人av动漫网站| 在线亚洲免费视频| 日韩一区二区在线观看| 久久精品无码一区二区三区| 久久久久九九视频| 亚洲国产一区二区三区| 日韩成人免费电影| 蜜臀av一级做a爰片久久| www.亚洲人| 一本到三区不卡视频| 欧美电视剧免费全集观看| 亚洲精品一区二区三区影院| 26uuu精品一区二区| 亚洲综合在线免费观看| 国产suv精品一区二区三区| 色综合久久中文字幕| 日韩欧美中文字幕公布| 日韩欧美国产综合| 香蕉成人伊视频在线观看| 99久久婷婷国产精品综合| 日本精品视频一区二区| 日韩女优毛片在线| 亚洲一二三四区不卡| 国产aⅴ精品一区二区三区色成熟| 国产乱码一区二区三区| 欧美精品在线观看播放| 亚洲午夜电影网| 欧美日韩激情在线| 欧美理论片在线| 中文一区在线播放| 国产真实乱偷精品视频免| 色狠狠一区二区| 国产精品国产精品国产专区不蜜| 国产在线日韩欧美| 国产亚洲婷婷免费| 91久久精品一区二区二区| 亚洲人成网站色在线观看| 欧洲精品在线观看| 久久99精品国产.久久久久久| 欧美成人猛片aaaaaaa| 成人国产在线观看| 午夜精品福利久久久| 国产情人综合久久777777| 成人福利视频网站| 日本午夜精品一区二区三区电影| 日韩精品一区二区三区中文不卡| 国内精品视频666| 一区二区国产视频| 欧美变态凌虐bdsm| 欧美色综合影院| 成人激情免费电影网址| 理论电影国产精品| 一区二区视频免费在线观看| 亚洲精品一区二区三区香蕉| 欧美性猛交一区二区三区精品| 国产一区二区美女诱惑| 亚洲成av人片在线| 亚洲日韩欧美一区二区在线| 久久综合九色综合97婷婷| 精品视频在线免费看| 97se亚洲国产综合自在线观| 国产精品一区二区在线播放| 石原莉奈在线亚洲二区| 亚洲成人免费视| 亚洲电影一级黄| 日韩福利视频导航| 久久国产夜色精品鲁鲁99| 日韩精品电影一区亚洲| 亚洲超碰97人人做人人爱| 国产成人综合自拍| 欧美老年两性高潮| 亚洲蜜臀av乱码久久精品蜜桃| 亚洲福利一区二区三区| 国产亚洲精品资源在线26u| 中文字幕欧美区| 国产一区二区在线观看视频| 激情综合色综合久久综合| 国产麻豆成人精品| 午夜精品久久久久久久| 视频一区中文字幕国产| 激情欧美一区二区三区在线观看| 国产在线播放一区| 欧美亚洲一区三区| 精品久久久久久亚洲综合网| 中文字幕一区二区三区在线不卡| 亚洲在线视频网站| 国产精品亚洲一区二区三区在线| 91美女片黄在线观看91美女| 欧美色图第一页| 欧美大白屁股肥臀xxxxxx| 国产精品午夜春色av| 亚洲va国产va欧美va观看| bt欧美亚洲午夜电影天堂| 日韩亚洲欧美在线| 一区二区三区欧美日韩| 国产成人在线观看| 久久久美女毛片| 美女网站视频久久| 7777精品伊人久久久大香线蕉超级流畅| 日韩精品一区二区三区四区视频| 亚洲综合一区二区精品导航| 一本色道a无线码一区v| 国产亚洲1区2区3区| 国产东北露脸精品视频| 久久伊人中文字幕| 国内精品免费在线观看| 国产丶欧美丶日本不卡视频| 91免费观看国产| 欧美中文一区二区三区| 日韩一卡二卡三卡四卡| 欧美丰满美乳xxx高潮www| 色婷婷亚洲精品| 亚洲激情在线播放| 色狠狠av一区二区三区| 国产精品国产自产拍高清av| 久久99精品一区二区三区| 日韩一卡二卡三卡四卡| 狠狠狠色丁香婷婷综合久久五月| 欧美一区二区久久久| 激情都市一区二区| 国产欧美视频一区二区三区| 成人小视频免费在线观看| 中文字幕一区二区三区乱码在线| 99精品国产99久久久久久白柏 | 日本免费新一区视频 | 日韩情涩欧美日韩视频| 国产精品一二三四| 亚洲影视在线观看| 精品免费日韩av| 一本大道久久a久久综合婷婷| 亚洲无线码一区二区三区| 久久久蜜桃精品| 欧美精品日日鲁夜夜添| gogo大胆日本视频一区| 日韩精品福利网| 亚洲综合小说图片| 中文乱码免费一区二区| 在线播放中文一区| 91女人视频在线观看| 激情欧美一区二区三区在线观看| 亚洲私人黄色宅男| 久久久五月婷婷| 欧美成人女星排名| 欧美一级生活片| 欧美乱妇15p| 日韩一区二区高清| 欧美一区二区三区色| 欧美一二三区在线|