本文整理汇总了C++中IDebugClient::Release方法的典型用法代码示例。如果您正苦于以下问题:C++ IDebugClient::Release方法的具体用法?C++ IDebugClient::Release怎么用?C++ IDebugClient::Release使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IDebugClient
的用法示例。
在下文中一共展示了IDebugClient::Release方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: sizeof
HRESULT
CALLBACK
DebugExtensionInitialize(PULONG Version, PULONG Flags)
{
IDebugClient *DebugClient = NULL;
HRESULT Hr= S_OK;
*Version = DEBUG_EXTENSION_VERSION(1, 0);
*Flags = 0;
// Connect to client
if ((Hr = DebugCreate(__uuidof(IDebugClient),
(void **)&DebugClient)) != S_OK)
{
return Hr;
}
// Get the windbg-style extension APIS
PDEBUG_CONTROL DebugControl;
if ((Hr = DebugClient->QueryInterface(__uuidof(IDebugControl),
(void **)&DebugControl)) == S_OK)
{
ExtensionApis.nSize = sizeof (ExtensionApis);
Hr = DebugControl->GetWindbgExtensionApis64(&ExtensionApis);
DebugControl->Release();
}
// done
DebugClient->Release();
return Hr;
}
示例2:
void
CALLBACK
DebugExtensionNotify(ULONG Notify, ULONG64 Argument)
{
UNREFERENCED_PARAMETER(Argument);
//
// The first time we actually connect to a target
//
/*
*New debugger extensions get new debugger interfaces by calling
*DebugCreate(__uuidof (IDebugClient), &DebugClient))
*DebugClient->QueryInterface(_uuidof(Interface_you_want)
*/
if ((Notify == DEBUG_NOTIFY_SESSION_ACCESSIBLE) && (!Connected))
{
IDebugClient *DebugClient;
HRESULT Hr;
PDEBUG_CONTROL DebugControl;
if ((Hr = DebugCreate(__uuidof(IDebugClient),
(void **)&DebugClient)) == S_OK)
{
//
// Get the architecture type.
//
if ((Hr = DebugClient->QueryInterface(__uuidof(IDebugControl),
(void **)&DebugControl)) == S_OK)
{
//jc:QueryInterface must fill in DebugControl
if ((Hr = DebugControl->GetActualProcessorType(
&TargetMachine)) == S_OK)
{
Connected = TRUE;
}
DebugControl->Release();
}
DebugClient->Release();
}
}
if (Notify == DEBUG_NOTIFY_SESSION_INACTIVE)
{
Connected = FALSE;
TargetMachine = 0;
}
return;
}
示例3: releaseWindbgInterfaces
static bool releaseWindbgInterfaces(JNIEnv* env, jobject obj) {
IDebugDataSpaces* ptrIDebugDataSpaces = (IDebugDataSpaces*) env->GetLongField(obj,
ptrIDebugDataSpaces_ID);
CHECK_EXCEPTION_(false);
if (ptrIDebugDataSpaces != 0) {
ptrIDebugDataSpaces->Release();
}
IDebugOutputCallbacks* ptrIDebugOutputCallbacks = (IDebugOutputCallbacks*)
env->GetLongField(obj, ptrIDebugOutputCallbacks_ID);
CHECK_EXCEPTION_(false);
if (ptrIDebugOutputCallbacks != 0) {
ptrIDebugOutputCallbacks->Release();
}
IDebugAdvanced* ptrIDebugAdvanced = (IDebugAdvanced*) env->GetLongField(obj,
ptrIDebugAdvanced_ID);
CHECK_EXCEPTION_(false);
if (ptrIDebugAdvanced != 0) {
ptrIDebugAdvanced->Release();
}
IDebugSymbols* ptrIDebugSymbols = (IDebugSymbols*) env->GetLongField(obj,
ptrIDebugSymbols_ID);
CHECK_EXCEPTION_(false);
if (ptrIDebugSymbols != 0) {
ptrIDebugSymbols->Release();
}
IDebugSystemObjects* ptrIDebugSystemObjects = (IDebugSystemObjects*) env->GetLongField(obj,
ptrIDebugSystemObjects_ID);
CHECK_EXCEPTION_(false);
if (ptrIDebugSystemObjects != 0) {
ptrIDebugSystemObjects->Release();
}
IDebugControl* ptrIDebugControl = (IDebugControl*) env->GetLongField(obj,
ptrIDebugControl_ID);
CHECK_EXCEPTION_(false);
if (ptrIDebugControl != 0) {
ptrIDebugControl->Release();
}
IDebugClient* ptrIDebugClient = (IDebugClient*) env->GetLongField(obj,
ptrIDebugClient_ID);
CHECK_EXCEPTION_(false);
if (ptrIDebugClient != 0) {
ptrIDebugClient->Release();
}
return true;
}
示例4:
void
CALLBACK
DebugExtensionNotify(ULONG Notify, ULONG64 Argument)
{
static BOOL Connected;
UNREFERENCED_PARAMETER(Argument);
// The first time we actually connect to a target
if ((Notify == DEBUG_NOTIFY_SESSION_ACCESSIBLE) && (!Connected))
{
IDebugClient *DebugClient = NULL;
HRESULT Hr;
PDEBUG_CONTROL DebugControl = NULL;
if ((Hr = DebugCreate(__uuidof(IDebugClient),
(void **)&DebugClient)) == S_OK)
{
//
// Get the architecture type.
//
if ((Hr = DebugClient->QueryInterface(__uuidof(IDebugControl),
(void **)&DebugControl)) == S_OK)
{
ULONG TargetMachine;
if ((Hr = DebugControl->GetActualProcessorType(
&TargetMachine)) == S_OK)
{
Connected = TRUE;
}
//NotifyOnTargetAccessible(DebugControl);
DebugControl->Release();
}
DebugClient->Release();
}
}
// The target is gone
if (Notify == DEBUG_NOTIFY_SESSION_INACTIVE)
Connected = FALSE;
return;
}
示例5: sizeof
HRESULT
CALLBACK
DebugExtensionInitialize(PULONG Version, PULONG Flags)
{
HRESULT hRes=S_OK;
IDebugClient *DebugClient;
PDEBUG_CONTROL DebugControl;
*Version = DEBUG_EXTENSION_VERSION(EXT_MAJOR_VER, EXT_MINOR_VER);
*Flags = 0;
if (FAILED(hRes=DebugCreate(__uuidof(IDebugClient), (void **)&DebugClient)))
return hRes;
if (SUCCEEDED(hRes=DebugClient->QueryInterface(__uuidof(IDebugControl), (void **)&DebugControl)))
{
// Get the windbg-style extension APIS
ExtensionApis.nSize = sizeof (ExtensionApis);
hRes = DebugControl->GetWindbgExtensionApis64(&ExtensionApis);
DebugControl->Release();
dprintf("[sync] DebugExtensionInitialize, ExtensionApis loaded\n");
}
DebugClient->Release();
g_ExtClient = NULL;
g_Synchronized = FALSE;
g_hPollCompleteEvent = CreateEvent(NULL, true, false, NULL);
if (g_hPollCompleteEvent == NULL)
{
dprintf("[sync] Command polling feature init failed\n");
return E_FAIL;
}
InitializeCriticalSection(&g_CritSectPollRelease);
if(SUCCEEDED(LoadConfigurationFile()))
dprintf("[sync] Configuration file loaded\n -> set HOST to %s:%s\n", g_DefaultHost, g_DefaultPort);
return hRes;
}
示例6: sizeof
//jc: this in the init routine. Runs on load.
HRESULT
CALLBACK
DebugExtensionInitialize(PULONG Version, PULONG Flags)
{
IDebugClient *DebugClient;
PDEBUG_CONTROL DebugControl;
HRESULT Hr;
*Version = DEBUG_EXTENSION_VERSION(1, 0);
*Flags = 0;
Hr = S_OK;
if ((Hr = DebugCreate(__uuidof(IDebugClient),
(void **)&DebugClient)) != S_OK)
{
return Hr;
}
if ((Hr = DebugClient->QueryInterface(__uuidof(IDebugControl),
(void **)&DebugControl)) == S_OK)
{
//
// Get the windbg-style extension APIS
//
ExtensionApis.nSize = sizeof (ExtensionApis);
Hr = DebugControl->GetWindbgExtensionApis64(&ExtensionApis);
DebugControl->Release();
}
dprintf("[Byakugan] Successfully loaded!\n");
DebugClient->Release();
return (Hr);
}
示例7: loadMinidump
void LateSymbolInfo::loadMinidump(std::wstring& dumppath, bool delete_when_done)
{
// Method credit to http://stackoverflow.com/a/8119364/21501
if (debugClient5 || debugControl4 || debugSymbols3)
{
//throw SleepyException(L"Minidump symbols already loaded.");
// maybe the user moved a .pdb to somewhere where we can now find it?
unloadMinidump();
}
IDebugClient *debugClient = NULL;
SetLastError(0);
comenforce(DebugCreate(__uuidof(IDebugClient), (void**)&debugClient), "DebugCreate");
comenforce(debugClient->QueryInterface(__uuidof(IDebugClient5 ), (void**)&debugClient5 ), "QueryInterface(IDebugClient5)" );
comenforce(debugClient->QueryInterface(__uuidof(IDebugControl4), (void**)&debugControl4), "QueryInterface(IDebugControl4)");
comenforce(debugClient->QueryInterface(__uuidof(IDebugSymbols3), (void**)&debugSymbols3), "QueryInterface(IDebugSymbols3)");
comenforce(debugClient5->SetOutputCallbacksWide(debugOutputCallbacks), "IDebugClient5::SetOutputCallbacksWide");
comenforce(debugSymbols3->SetSymbolOptions(SYMOPT_UNDNAME | SYMOPT_LOAD_LINES | SYMOPT_OMAP_FIND_NEAREST | SYMOPT_AUTO_PUBLICS | SYMOPT_DEBUG), "IDebugSymbols::SetSymbolOptions");
std::wstring sympath;
prefs.AdjustSymbolPath(sympath, true);
comenforce(debugSymbols3->SetSymbolPathWide(sympath.c_str()), "IDebugSymbols::SetSymbolPath");
comenforce(debugClient5->OpenDumpFileWide(dumppath.c_str(), NULL), "IDebugClient4::OpenDumpFileWide");
comenforce(debugControl4->WaitForEvent(0, INFINITE), "IDebugControl::WaitForEvent");
// Since we can't just enumerate all symbols in all modules referenced by the minidump,
// we have to keep the debugger session open and query symbols as requested by the
// profiler GUI.
debugClient->Release(); // but keep the other ones
// If we are given a temporary file, clean it up later
if (delete_when_done)
file_to_delete = dumppath;
}
示例8: DebugExtensionInitialize
extern "C" HRESULT CALLBACK DebugExtensionInitialize(PULONG Version, PULONG Flags)
{
IDebugClient *DebugClient;
PDEBUG_CONTROL DebugControl;
HRESULT Hr;
*Version = DEBUG_EXTENSION_VERSION(1, 0);
*Flags = 0;
Hr = S_OK;
if ((Hr = DebugCreate(__uuidof(IDebugClient), (void **)&DebugClient)) != S_OK)
{
return Hr;
}
if ((Hr = DebugClient->QueryInterface(__uuidof(IDebugControl), (void **)&DebugControl)) == S_OK)
{
ExtensionApis.nSize = sizeof(ExtensionApis);
Hr = DebugControl->GetWindbgExtensionApis64(&ExtensionApis);
DebugControl->Release();
}
DebugClient->Release();
return Hr;
}
示例9: sizeof
void
CALLBACK
DebugExtensionNotify(ULONG Notify, ULONG64 /*Argument*/)
{
//
// The first time we actually connect to a target, get the page size
//
if ((Notify == DEBUG_NOTIFY_SESSION_ACCESSIBLE) && (!Connected))
{
IDebugClient *DebugClient;
PDEBUG_DATA_SPACES DebugDataSpaces;
PDEBUG_CONTROL DebugControl;
HRESULT Hr;
ULONG64 Page;
if ((Hr = DebugCreate(__uuidof(IDebugClient),
(void **)&DebugClient)) == S_OK)
{
//
// Get the page size and PAE enable flag
//
if ((Hr = DebugClient->QueryInterface(__uuidof(IDebugDataSpaces),
(void **)&DebugDataSpaces)) == S_OK)
{
if ((Hr = DebugDataSpaces->ReadDebuggerData(
DEBUG_DATA_MmPageSize, &Page,
sizeof(Page), NULL)) == S_OK)
{
PageSize = (ULONG)(ULONG_PTR)Page;
}
DebugDataSpaces->Release();
}
//
// Get the architecture type.
//
if ((Hr = DebugClient->QueryInterface(__uuidof(IDebugControl),
(void **)&DebugControl)) == S_OK)
{
if ((Hr = DebugControl->GetActualProcessorType(
&TargetMachine)) == S_OK)
{
Connected = TRUE;
}
ULONG Qualifier;
if ((Hr = DebugControl->GetDebuggeeType(&g_TargetClass, &Qualifier)) == S_OK)
{
}
DebugControl->Release();
}
DebugClient->Release();
}
}
if (Notify == DEBUG_NOTIFY_SESSION_INACTIVE)
{
Connected = FALSE;
PageSize = 0;
TargetMachine = 0;
}
return;
}