Windbg sdk を使用して独自のデバッガーを作成しています。デバッガーは、ハンドル リークを回避するために、デバッグされたアプリによって割り当てられたすべてのハンドルを収集できます。これが私のコードです:
void zAdvancedDebugger::debugProc(){
// Creating interfaces including m_dbgClient, m_dbgControl
if(!createInterfaces()){
printf("Failed to create debugging interfaces\r\n");
return;
}
std::string strRealCmdLine="\"" + app + "\" " + args;
// Every thing's set up so start the app.
if (( m_dbgClient->CreateProcess(0, (PSTR)strRealCmdLine.c_str(), DEBUG_PROCESS )) != S_OK)
return ;
// event loop
while(true){
if(m_dbgControl->WaitForEvent(DEBUG_WAIT_DEFAULT,INFINITE)!= S_OK)
break;
}
HRESULT ret=m_dbgControl->Execute(
DEBUG_OUTCTL_IGNORE,
".closehandle -a", // Close all handles allocated
DEBUG_EXECUTE_NOT_LOGGED );
}
問題は、コマンド「.closehandle -a」を実行できないことです。コードを実行すると、常に「ret 0x80040205 予期しない例外が発生しました」というメッセージが表示されます。これのどこが悪いのか教えてください。