当前位置: 首页>>代码示例>>C++>>正文


C++ CInput::getFather方法代码示例

本文整理汇总了C++中CInput::getFather方法的典型用法代码示例。如果您正苦于以下问题:C++ CInput::getFather方法的具体用法?C++ CInput::getFather怎么用?C++ CInput::getFather使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在CInput的用法示例。


在下文中一共展示了CInput::getFather方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: callPintool

void FuzzwinAlgorithm::callPintool() 
{
    // ligne de commande pour appel de PIN avec l'entree en cours
    std::string cmdLine(this->getCmdLinePintool()); 
    // mise à zéro de la formule
    _formula.erase();
  
    STARTUPINFO si;
    PROCESS_INFORMATION pi;
    
    ZeroMemory(&si, sizeof(si));
    ZeroMemory(&pi, sizeof(pi));
    si.cb = sizeof(si);
    
    if (CreateProcess(nullptr, 
        (LPSTR) cmdLine.c_str(), 
        NULL,          // process security attributes 
        NULL,          // primary thread security attributes 
        TRUE,          // handles are inherited 
        CREATE_NO_WINDOW,    // creation flags 
        NULL,          // use parent's environment 
        NULL,          // use parent's current directory 
        &si, &pi)) 
    {          
        
        /***********************/
        /** CONNEXION AU PIPE **/
        /***********************/
        
        BOOL fSuccess = ConnectNamedPipe(_hPintoolPipe, NULL);
        if (!fSuccess && GetLastError() != ERROR_PIPE_CONNECTED) 
        {	
            this->logTimeStamp();
            this->log("erreur de connexion au pipe FuzzWin GLE=" + std::to_string(GetLastError()));
            this->logEndOfLine();
            return; // formule vide
        }
        
        // envoi dans le pipe du chemin vers l'entrée étudiée
        if (EXIT_FAILURE == sendArgumentToPintool(_pCurrentInput->getFilePath()))
        {
            return; // formule vide
        }

        /********************************************************/
        /** ATTENTE DE L'ARRIVEE DES DONNEES DEPUIS LE PINTOOL **/
        /********************************************************/
        char buffer[512]; // buffer de récupération des données
        DWORD cbBytesRead = 0; 

        // lecture successive de blocs de 512 octets 
        // et construction progressive de la formule
        do 
        { 
            fSuccess = ReadFile(_hPintoolPipe,  // pipe handle 
                &buffer[0],    // buffer to receive reply 
                512,            // size of buffer 
                &cbBytesRead,   // number of bytes read 
                NULL);          // not overlapped 
 
            if ( ! fSuccess && (GetLastError() != ERROR_MORE_DATA) )  break; 
            // ajout des données lues au resultat
            _formula.append(&buffer[0], cbBytesRead);

        } while (!fSuccess);  // repetition si ERROR_MORE_DATA 

        // deconnexion du pipe
        DisconnectNamedPipe(_hPintoolPipe);

        // attente de la fermeture de l'application
        WaitForSingleObject(pi.hProcess, INFINITE);
        
        // recupération du code de retour du pintool
        // (NON ENCORE IMPLEMENTE)
        DWORD exitCode = 0;
        GetExitCodeProcess(pi.hProcess, &exitCode);

        // fermeture des handles processus et thread 
        CloseHandle(pi.hProcess); 
        CloseHandle(pi.hThread);

        // si option 'keepfiles' ou 'traceonly': sauvegarde de la formule (extension .smt2)
        if (_keepFiles || _traceOnly) 
        {
            std::ofstream ofs(_pCurrentInput->getLogFile());
            
            // entete (version pin Z3 etc) et nom de l'entrée
            ofs << infoHeader << '\n';          
            ofs << "; Fichier instrumenté : ";  
            ofs << _pCurrentInput->getFileName();  
            
            // ajout de l'arbre généalogique (si objet non-root et mode verbeux)
            CInput *pFather = _pCurrentInput->getFather();
            if (_verbose && pFather) 
            {
                ofs << '(';
                do // boucle récursive de déclaration des parents de chaque fichier
                {
                    ofs << " <- " << pFather->getFileName();
                    pFather = pFather->getFather();
//.........这里部分代码省略.........
开发者ID:ArashAll,项目名称:FuzzWin,代码行数:101,代码来源:pintool_interface.cpp


注:本文中的CInput::getFather方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。