Кто-нибудь юзал ее COM-интерфейсы для отладки ядра на другой машине? А именно, IDebugClient, IDebugControl и др. Я попробовал заюзать, у меня не работает Подскажете что-нибудь дельное? Код (Text): #include <windows.h> #include <stdio.h> #include <dbgeng.h> void check (HRESULT hr, char *fname) { if (hr != S_OK) { printf("%s failed with status %08x\n", fname, hr); ExitProcess (hr); } } int main() { HRESULT Result; IDebugClient * debugClient; IDebugControl* debugControl; IDebugDataSpaces* debugDataSpaces; ULONG64 Address64 = 0xFFFFFFFFFFDFF000; ULONG Buffer = 0; ULONG Read = 0; // // Create IDebugClient instance // Result = DebugCreate( __uuidof(IDebugClient), (void **)&debugClient ); check (Result, "DebugCreate"); printf("DebugCreate succeeded, IDebugClient created\n"); // // Attach to VMWare // Result = debugClient->AttachKernel (DEBUG_ATTACH_KERNEL_CONNECTION, "com:pipe,port=\\\\router\\pipe\\com_1,reconnect"); //Result = debugClient->AttachKernel (DEBUG_ATTACH_LOCAL_KERNEL, 0); check (Result, "IDebugClient::AttachKernel"); printf("IDebugClient::AttachKernel succeeded\n"); // // Get IDebugControl interface // Result = debugClient->QueryInterface (__uuidof(IDebugControl), (PVOID*)&debugControl); check (Result, "IDebugClient::QueryInterface(IDebugControl)"); printf("IDebugClient::QueryInterface succeeded (got IDebugControl instance)\n"); // // Stop machine // Result = debugControl->SetExecutionStatus (DEBUG_STATUS_BREAK); check (Result, "IDebugControl::SetExecutionStatus"); printf("IDebugControl::SetExecutionStatus succeeded\n"); // // Get IDebugDataSpaces interface // Result = debugClient->QueryInterface (__uuidof(IDebugDataSpaces), (PVOID*)&debugDataSpaces); check (Result, "IDebugClient::QueryInterface(IDebugDataSpaces)"); printf("IDebugClient::QueryInterface succeeded (got IDebugDataSpaces instance)\n"); // // Read virtual memory // Result = debugDataSpaces->ReadVirtual (Address64, &Buffer, sizeof(Buffer), &Read); check (Result, "IDebugDataSpaces::ReadVirtual"); printf("IDebugDataSpaces::ReadVirtual succeeded: read from %08x : %08x\n", (ULONG)Address64, Buffer); return 0; } Оно падает на SetExecutionStatus - она возвращает ошибку. Если ее вызов закомментировать, то ReadVirtual возвращает ошибку. 80070057 - the parameter is incorrect А ReadVirtual падает с 8000ffff.
Попробуй спросить MSDN forums http://forums.microsoft.com/MSDN/default.aspx?siteid=1, www.osronline.com, и так же на Usenet (microsoft.public.windbg)
Squash Читать документацию до просветления. Самый обычный способ ... Google дум IDebugClient::AttachKernel Получаем линку на http://msdn.microsoft.com/en-us/library/windows/hardware/ff538145%28v=vs.85%29.aspx Читаем ремарку (Remarks) Note The engine doesn't completely attach to the kernel until the WaitForEvent method has been called. Only after the kernel has generated an event -- for example, the initial breakpoint -- does it become available in the debugger session. И так у нас стоет вопрос : Где твою мать цикл отладки ? Вот после того как получим события, тогда и можно будет брякатся и все такое делать, а иначе незя.