Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2077 lines
54 KiB

  1. //----------------------------------------------------------------------------
  2. //
  3. // Debug client classes.
  4. //
  5. // Copyright (C) Microsoft Corporation, 1999-2002.
  6. //
  7. //----------------------------------------------------------------------------
  8. #ifndef __DBGCLT_HPP__
  9. #define __DBGCLT_HPP__
  10. // Most-derived interfaces. When casting back and forth
  11. // from DebugClient to a specific interface these defines
  12. // should be used so that when new versions of interfaces
  13. // are added this is the only place that needs to be updated.
  14. #define IDebugAdvancedN IDebugAdvanced
  15. #define IDebugClientN IDebugClient4
  16. #define IDebugControlN IDebugControl3
  17. #define IDebugDataSpacesN IDebugDataSpaces3
  18. #define IDebugRegistersN IDebugRegisters
  19. #define IDebugSymbolGroupN IDebugSymbolGroup
  20. #define IDebugSymbolsN IDebugSymbols2
  21. #define IDebugSystemObjectsN IDebugSystemObjects3
  22. #define INPUT_BUFFER_SIZE 4096
  23. extern ULONG g_SystemAllocGranularity;
  24. extern BOOL g_QuietMode;
  25. extern ULONG g_SessionThread;
  26. // The platform ID of the machine running the debugger. Note
  27. // that this may be different from g_TargetPlatformId, which
  28. // is the platform ID of the machine being debugged.
  29. extern ULONG g_DebuggerPlatformId;
  30. // A lock that can be used for any short-term protection needs.
  31. // This lock should not be held for a long time nor should
  32. // other locks be taken when it is held. Users of the lock
  33. // can expect little contention and no deadlock possibilities.
  34. extern CRITICAL_SECTION g_QuickLock;
  35. // The global lock protecting engine state. This lock
  36. // should be taken everywhere and held any time engine
  37. // activity occurs. It should be suspended whenever a
  38. // call needs to call out of the engine, such as with
  39. // callbacks.
  40. extern CRITICAL_SECTION g_EngineLock;
  41. extern ULONG g_EngineNesting;
  42. #define ENTER_ENGINE() \
  43. (EnterCriticalSection(&g_EngineLock), g_EngineNesting++)
  44. #define LEAVE_ENGINE() \
  45. (::FlushCallbacks(), g_EngineNesting--, \
  46. LeaveCriticalSection(&g_EngineLock))
  47. #define SUSPEND_ENGINE() \
  48. (::FlushCallbacks(), LeaveCriticalSection(&g_EngineLock))
  49. #define RESUME_ENGINE() \
  50. EnterCriticalSection(&g_EngineLock)
  51. // Special routine which opportunistically takes the engine lock.
  52. inline HRESULT
  53. TRY_ENTER_ENGINE()
  54. {
  55. if (g_DebuggerPlatformId != VER_PLATFORM_WIN32_NT)
  56. {
  57. return HRESULT_FROM_WIN32(ERROR_CALL_NOT_IMPLEMENTED);
  58. }
  59. if (!g_NtDllCalls.RtlTryEnterCriticalSection(&g_EngineLock))
  60. {
  61. return HRESULT_FROM_WIN32(ERROR_BUSY);
  62. }
  63. g_EngineNesting++;
  64. return S_OK;
  65. }
  66. // Events and storage space for returning event callback
  67. // status from an APC.
  68. extern HANDLE g_EventStatusWaiting;
  69. extern HANDLE g_EventStatusReady;
  70. extern ULONG g_EventStatus;
  71. // Named event to sleep on.
  72. extern HANDLE g_SleepPidEvent;
  73. void ResetImplicitData(void);
  74. void DotThread(PDOT_COMMAND Cmd, DebugClient* Client);
  75. void DotProcess(PDOT_COMMAND Cmd, DebugClient* Client);
  76. void DotFiber(PDOT_COMMAND Cmd, DebugClient* Client);
  77. void DotKernelKill(PDOT_COMMAND Cmd, DebugClient* Client);
  78. void DotPageIn(PDOT_COMMAND Cmd, DebugClient* Client);
  79. HRESULT SetScopeContextFromThreadData(ULONG64 ThreadBase, BOOL Verbose);
  80. HRESULT RawWaitForEvent(ULONG Flags, ULONG Timeout);
  81. //----------------------------------------------------------------------------
  82. //
  83. // DebugClient.
  84. //
  85. //----------------------------------------------------------------------------
  86. extern DebugClient* g_Clients;
  87. extern ULONG g_LogMask;
  88. extern ULONG g_OutputWidth;
  89. extern PCSTR g_OutputLinePrefix;
  90. extern char g_InputBuffer[INPUT_BUFFER_SIZE];
  91. extern ULONG g_InputSequence;
  92. extern HANDLE g_InputEvent;
  93. extern ULONG g_InputSizeRequested;
  94. extern ULONG g_EngOptions;
  95. extern ULONG g_GlobalProcOptions;
  96. //
  97. // Engine status flags.
  98. //
  99. #define ENG_STATUS_WAITING 0x00000001
  100. #define ENG_STATUS_SUSPENDED 0x00000002
  101. #define ENG_STATUS_BREAKPOINTS_INSERTED 0x00000004
  102. // A true system state change occurred.
  103. #define ENG_STATUS_STATE_CHANGED 0x00000008
  104. #define ENG_STATUS_STOP_SESSION 0x00000010
  105. #define ENG_STATUS_PREPARED_FOR_CALLS 0x00000020
  106. #define ENG_STATUS_NO_AUTO_WAIT 0x00000040
  107. #define ENG_STATUS_PENDING_BREAK_IN 0x00000080
  108. #define ENG_STATUS_AT_INITIAL_BREAK 0x00000100
  109. #define ENG_STATUS_AT_INITIAL_MODULE_LOAD 0x00000200
  110. #define ENG_STATUS_EXIT_CURRENT_WAIT 0x00000400
  111. #define ENG_STATUS_USER_INTERRUPT 0x00000800
  112. // Indicates a wait-for-state-change finished successfully.
  113. // Primarily used to determine whether a kernel session is
  114. // waiting for commands or not.
  115. #define ENG_STATUS_WAIT_SUCCESSFUL 0x00001000
  116. #define ENG_STATUS_SPECIAL_EXECUTION 0x00002000
  117. extern ULONG g_EngStatus;
  118. //
  119. // Deferred action flags.
  120. // These flags are set during processing in order to indicate
  121. // actions that should be performed before execution begins
  122. // again.
  123. //
  124. #define ENG_DEFER_SET_EVENT 0x00000001
  125. #define ENG_DEFER_RESUME_THREAD 0x00000002
  126. #define ENG_DEFER_DELETE_EXITED 0x00000004
  127. #define ENG_DEFER_EXCEPTION_HANDLING 0x00000008
  128. #define ENG_DEFER_UPDATE_CONTROL_SET 0x00000010
  129. #define ENG_DEFER_HARDWARE_TRACING 0x00000020
  130. #define ENG_DEFER_OUTPUT_CURRENT_INFO 0x00000040
  131. extern ULONG g_EngDefer;
  132. //
  133. // Error suppression flags.
  134. // These flags are set when particular errors are displayed
  135. // in order to avoid repeated errors.
  136. //
  137. #define ENG_ERR_DEBUGGER_DATA 0x00000001
  138. extern ULONG g_EngErr;
  139. //
  140. // Per-client flags.
  141. //
  142. #define CLIENT_IN_LIST 0x00000001
  143. #define CLIENT_DESTROYED 0x00000002
  144. #define CLIENT_REMOTE 0x00000004
  145. #define CLIENT_PRIMARY 0x00000008
  146. class DebugClient
  147. : public IDebugAdvancedN,
  148. public IDebugClientN,
  149. public IDebugControlN,
  150. public IDebugDataSpacesN,
  151. public IDebugRegistersN,
  152. public IDebugSymbolsN,
  153. public IDebugSystemObjectsN,
  154. public DbgRpcClientObject
  155. {
  156. public:
  157. DebugClient(void);
  158. ~DebugClient(void);
  159. void Destroy(void);
  160. // IUnknown.
  161. STDMETHOD(QueryInterface)(
  162. THIS_
  163. IN REFIID InterfaceId,
  164. OUT PVOID* Interface
  165. );
  166. STDMETHOD_(ULONG, AddRef)(
  167. THIS
  168. );
  169. STDMETHOD_(ULONG, Release)(
  170. THIS
  171. );
  172. // IDebugAdvanced.
  173. STDMETHOD(GetThreadContext)(
  174. THIS_
  175. OUT PVOID Context,
  176. IN ULONG ContextSize
  177. );
  178. STDMETHOD(SetThreadContext)(
  179. THIS_
  180. IN PVOID Context,
  181. IN ULONG ContextSize
  182. );
  183. // IDebugClient*.
  184. STDMETHOD(AttachKernel)(
  185. THIS_
  186. IN ULONG Flags,
  187. IN OPTIONAL PCSTR ConnectOptions
  188. );
  189. STDMETHOD(GetKernelConnectionOptions)(
  190. THIS_
  191. OUT OPTIONAL PSTR Buffer,
  192. IN ULONG BufferSize,
  193. OUT OPTIONAL PULONG OptionsSize
  194. );
  195. STDMETHOD(SetKernelConnectionOptions)(
  196. THIS_
  197. IN PCSTR Options
  198. );
  199. STDMETHOD(StartProcessServer)(
  200. THIS_
  201. IN ULONG Flags,
  202. IN PCSTR Options,
  203. IN PVOID Reserved
  204. );
  205. STDMETHOD(ConnectProcessServer)(
  206. THIS_
  207. IN PCSTR RemoteOptions,
  208. OUT PULONG64 Server
  209. );
  210. STDMETHOD(DisconnectProcessServer)(
  211. THIS_
  212. IN ULONG64 Server
  213. );
  214. STDMETHOD(GetRunningProcessSystemIds)(
  215. THIS_
  216. IN ULONG64 Server,
  217. OUT OPTIONAL /* size_is(Count) */ PULONG Ids,
  218. IN ULONG Count,
  219. OUT OPTIONAL PULONG ActualCount
  220. );
  221. STDMETHOD(GetRunningProcessSystemIdByExecutableName)(
  222. THIS_
  223. IN ULONG64 Server,
  224. IN PCSTR ExeName,
  225. IN ULONG Flags,
  226. OUT PULONG Id
  227. );
  228. STDMETHOD(GetRunningProcessDescription)(
  229. THIS_
  230. IN ULONG64 Server,
  231. IN ULONG SystemId,
  232. IN ULONG Flags,
  233. OUT OPTIONAL PSTR ExeName,
  234. IN ULONG ExeNameSize,
  235. OUT OPTIONAL PULONG ActualExeNameSize,
  236. OUT OPTIONAL PSTR Description,
  237. IN ULONG DescriptionSize,
  238. OUT OPTIONAL PULONG ActualDescriptionSize
  239. );
  240. STDMETHOD(AttachProcess)(
  241. THIS_
  242. IN ULONG64 Server,
  243. IN ULONG ProcessId,
  244. IN ULONG AttachFlags
  245. );
  246. STDMETHOD(CreateProcess)(
  247. THIS_
  248. IN ULONG64 Server,
  249. IN PSTR CommandLine,
  250. IN ULONG CreateFlags
  251. );
  252. STDMETHOD(CreateProcessAndAttach)(
  253. THIS_
  254. IN ULONG64 Server,
  255. IN OPTIONAL PSTR CommandLine,
  256. IN ULONG CreateFlags,
  257. IN ULONG ProcessId,
  258. IN ULONG AttachFlags
  259. );
  260. STDMETHOD(GetProcessOptions)(
  261. THIS_
  262. OUT PULONG Options
  263. );
  264. STDMETHOD(AddProcessOptions)(
  265. THIS_
  266. IN ULONG Options
  267. );
  268. STDMETHOD(RemoveProcessOptions)(
  269. THIS_
  270. IN ULONG Options
  271. );
  272. STDMETHOD(SetProcessOptions)(
  273. THIS_
  274. IN ULONG Options
  275. );
  276. STDMETHOD(OpenDumpFile)(
  277. THIS_
  278. IN PCSTR DumpFile
  279. );
  280. STDMETHOD(WriteDumpFile)(
  281. THIS_
  282. IN PCSTR DumpFile,
  283. IN ULONG Qualifier
  284. );
  285. STDMETHOD(ConnectSession)(
  286. THIS_
  287. IN ULONG Flags,
  288. IN ULONG HistoryLimit
  289. );
  290. STDMETHOD(StartServer)(
  291. THIS_
  292. IN PCSTR Options
  293. );
  294. STDMETHOD(OutputServers)(
  295. THIS_
  296. IN ULONG OutputControl,
  297. IN PCSTR Machine,
  298. IN ULONG Flags
  299. );
  300. STDMETHOD(TerminateProcesses)(
  301. THIS
  302. );
  303. STDMETHOD(DetachProcesses)(
  304. THIS
  305. );
  306. STDMETHOD(EndSession)(
  307. THIS_
  308. IN ULONG Flags
  309. );
  310. STDMETHOD(GetExitCode)(
  311. THIS_
  312. OUT PULONG Code
  313. );
  314. STDMETHOD(DispatchCallbacks)(
  315. THIS_
  316. IN ULONG Timeout
  317. );
  318. STDMETHOD(ExitDispatch)(
  319. THIS_
  320. IN PDEBUG_CLIENT Client
  321. );
  322. STDMETHOD(CreateClient)(
  323. THIS_
  324. OUT PDEBUG_CLIENT* Client
  325. );
  326. STDMETHOD(GetInputCallbacks)(
  327. THIS_
  328. OUT PDEBUG_INPUT_CALLBACKS* Callbacks
  329. );
  330. STDMETHOD(SetInputCallbacks)(
  331. THIS_
  332. IN PDEBUG_INPUT_CALLBACKS Callbacks
  333. );
  334. STDMETHOD(GetOutputCallbacks)(
  335. THIS_
  336. OUT PDEBUG_OUTPUT_CALLBACKS* Callbacks
  337. );
  338. STDMETHOD(SetOutputCallbacks)(
  339. THIS_
  340. IN PDEBUG_OUTPUT_CALLBACKS Callbacks
  341. );
  342. STDMETHOD(GetOutputMask)(
  343. THIS_
  344. OUT PULONG Mask
  345. );
  346. STDMETHOD(SetOutputMask)(
  347. THIS_
  348. IN ULONG Mask
  349. );
  350. STDMETHOD(GetOtherOutputMask)(
  351. THIS_
  352. IN PDEBUG_CLIENT Client,
  353. OUT PULONG Mask
  354. );
  355. STDMETHOD(SetOtherOutputMask)(
  356. THIS_
  357. IN PDEBUG_CLIENT Client,
  358. IN ULONG Mask
  359. );
  360. STDMETHOD(GetOutputWidth)(
  361. THIS_
  362. OUT PULONG Columns
  363. );
  364. STDMETHOD(SetOutputWidth)(
  365. THIS_
  366. IN ULONG Columns
  367. );
  368. STDMETHOD(GetOutputLinePrefix)(
  369. THIS_
  370. OUT OPTIONAL PSTR Buffer,
  371. IN ULONG BufferSize,
  372. OUT OPTIONAL PULONG PrefixSize
  373. );
  374. STDMETHOD(SetOutputLinePrefix)(
  375. THIS_
  376. IN OPTIONAL PCSTR Prefix
  377. );
  378. STDMETHOD(GetIdentity)(
  379. THIS_
  380. OUT OPTIONAL PSTR Buffer,
  381. IN ULONG BufferSize,
  382. OUT OPTIONAL PULONG IdentitySize
  383. );
  384. STDMETHOD(OutputIdentity)(
  385. THIS_
  386. IN ULONG OutputControl,
  387. IN ULONG Flags,
  388. IN PCSTR Format
  389. );
  390. STDMETHOD(GetEventCallbacks)(
  391. THIS_
  392. OUT PDEBUG_EVENT_CALLBACKS* Callbacks
  393. );
  394. STDMETHOD(SetEventCallbacks)(
  395. THIS_
  396. IN PDEBUG_EVENT_CALLBACKS Callbacks
  397. );
  398. STDMETHOD(FlushCallbacks)(
  399. THIS
  400. );
  401. STDMETHOD(WriteDumpFile2)(
  402. THIS_
  403. IN PCSTR DumpFile,
  404. IN ULONG Qualifier,
  405. IN ULONG FormatFlags,
  406. IN OPTIONAL PCSTR Comment
  407. );
  408. STDMETHOD(AddDumpInformationFile)(
  409. THIS_
  410. IN PCSTR InfoFile,
  411. IN ULONG Type
  412. );
  413. STDMETHOD(EndProcessServer)(
  414. THIS_
  415. IN ULONG64 Server
  416. );
  417. STDMETHOD(WaitForProcessServerEnd)(
  418. THIS_
  419. IN ULONG Timeout
  420. );
  421. STDMETHOD(IsKernelDebuggerEnabled)(
  422. THIS
  423. );
  424. STDMETHOD(TerminateCurrentProcess)(
  425. THIS
  426. );
  427. STDMETHOD(DetachCurrentProcess)(
  428. THIS
  429. );
  430. STDMETHOD(AbandonCurrentProcess)(
  431. THIS
  432. );
  433. STDMETHOD(GetRunningProcessSystemIdByExecutableNameWide)(
  434. THIS_
  435. IN ULONG64 Server,
  436. IN PCWSTR ExeName,
  437. IN ULONG Flags,
  438. OUT PULONG Id
  439. );
  440. STDMETHOD(GetRunningProcessDescriptionWide)(
  441. THIS_
  442. IN ULONG64 Server,
  443. IN ULONG SystemId,
  444. IN ULONG Flags,
  445. OUT OPTIONAL PWSTR ExeName,
  446. IN ULONG ExeNameSize,
  447. OUT OPTIONAL PULONG ActualExeNameSize,
  448. OUT OPTIONAL PWSTR Description,
  449. IN ULONG DescriptionSize,
  450. OUT OPTIONAL PULONG ActualDescriptionSize
  451. );
  452. STDMETHOD(CreateProcessWide)(
  453. THIS_
  454. IN ULONG64 Server,
  455. IN PWSTR CommandLine,
  456. IN ULONG CreateFlags
  457. );
  458. STDMETHOD(CreateProcessAndAttachWide)(
  459. THIS_
  460. IN ULONG64 Server,
  461. IN OPTIONAL PWSTR CommandLine,
  462. IN ULONG CreateFlags,
  463. IN ULONG ProcessId,
  464. IN ULONG AttachFlags
  465. );
  466. STDMETHOD(OpenDumpFileWide)(
  467. THIS_
  468. IN OPTIONAL PCWSTR FileName,
  469. IN ULONG64 FileHandle
  470. );
  471. STDMETHOD(WriteDumpFileWide)(
  472. THIS_
  473. IN OPTIONAL PCWSTR FileName,
  474. IN ULONG64 FileHandle,
  475. IN ULONG Qualifier,
  476. IN ULONG FormatFlags,
  477. IN OPTIONAL PCWSTR Comment
  478. );
  479. STDMETHOD(AddDumpInformationFileWide)(
  480. THIS_
  481. IN OPTIONAL PCWSTR FileName,
  482. IN ULONG64 FileHandle,
  483. IN ULONG Type
  484. );
  485. STDMETHOD(GetNumberDumpFiles)(
  486. THIS_
  487. OUT PULONG Number
  488. );
  489. STDMETHOD(GetDumpFile)(
  490. THIS_
  491. IN ULONG Index,
  492. OUT OPTIONAL PSTR Buffer,
  493. IN ULONG BufferSize,
  494. OUT OPTIONAL PULONG NameSize,
  495. OUT OPTIONAL PULONG64 Handle,
  496. OUT PULONG Type
  497. );
  498. STDMETHOD(GetDumpFileWide)(
  499. THIS_
  500. IN ULONG Index,
  501. OUT OPTIONAL PWSTR Buffer,
  502. IN ULONG BufferSize,
  503. OUT OPTIONAL PULONG NameSize,
  504. OUT OPTIONAL PULONG64 Handle,
  505. OUT PULONG Type
  506. );
  507. // IDebugControl-3.
  508. STDMETHOD(GetInterrupt)(
  509. THIS
  510. );
  511. STDMETHOD(SetInterrupt)(
  512. THIS_
  513. IN ULONG Flags
  514. );
  515. STDMETHOD(GetInterruptTimeout)(
  516. THIS_
  517. OUT PULONG Seconds
  518. );
  519. STDMETHOD(SetInterruptTimeout)(
  520. THIS_
  521. IN ULONG Seconds
  522. );
  523. STDMETHOD(GetLogFile)(
  524. THIS_
  525. OUT OPTIONAL PSTR Buffer,
  526. IN ULONG BufferSize,
  527. OUT OPTIONAL PULONG FileSize,
  528. OUT PBOOL Append
  529. );
  530. STDMETHOD(OpenLogFile)(
  531. THIS_
  532. IN PCSTR File,
  533. IN BOOL Append
  534. );
  535. STDMETHOD(CloseLogFile)(
  536. THIS
  537. );
  538. STDMETHOD(GetLogMask)(
  539. THIS_
  540. OUT PULONG Mask
  541. );
  542. STDMETHOD(SetLogMask)(
  543. THIS_
  544. IN ULONG Mask
  545. );
  546. STDMETHOD(Input)(
  547. THIS_
  548. OUT PSTR Buffer,
  549. IN ULONG BufferSize,
  550. OUT OPTIONAL PULONG InputSize
  551. );
  552. STDMETHOD(ReturnInput)(
  553. THIS_
  554. IN PCSTR Buffer
  555. );
  556. STDMETHODV(Output)(
  557. THIS_
  558. IN ULONG Mask,
  559. IN PCSTR Format,
  560. ...
  561. );
  562. STDMETHOD(OutputVaList)(
  563. THIS_
  564. IN ULONG Mask,
  565. IN PCSTR Format,
  566. IN va_list Args
  567. );
  568. STDMETHODV(ControlledOutput)(
  569. THIS_
  570. IN ULONG OutputControl,
  571. IN ULONG Mask,
  572. IN PCSTR Format,
  573. ...
  574. );
  575. STDMETHOD(ControlledOutputVaList)(
  576. THIS_
  577. IN ULONG OutputControl,
  578. IN ULONG Mask,
  579. IN PCSTR Format,
  580. IN va_list Args
  581. );
  582. STDMETHOD(OutputPrompt)(
  583. THIS_
  584. IN ULONG OutputControl,
  585. IN OPTIONAL PCSTR Format,
  586. ...
  587. );
  588. STDMETHOD(OutputPromptVaList)(
  589. THIS_
  590. IN ULONG OutputControl,
  591. IN OPTIONAL PCSTR Format,
  592. IN va_list Args
  593. );
  594. STDMETHOD(GetPromptText)(
  595. THIS_
  596. OUT OPTIONAL PSTR Buffer,
  597. IN ULONG BufferSize,
  598. OUT OPTIONAL PULONG TextSize
  599. );
  600. STDMETHOD(OutputCurrentState)(
  601. THIS_
  602. IN ULONG OutputControl,
  603. IN ULONG Flags
  604. );
  605. STDMETHOD(OutputVersionInformation)(
  606. THIS_
  607. IN ULONG OutputControl
  608. );
  609. STDMETHOD(GetNotifyEventHandle)(
  610. THIS_
  611. OUT PULONG64 Handle
  612. );
  613. STDMETHOD(SetNotifyEventHandle)(
  614. THIS_
  615. IN ULONG64 Handle
  616. );
  617. STDMETHOD(Assemble)(
  618. THIS_
  619. IN ULONG64 Offset,
  620. IN PCSTR Instr,
  621. OUT PULONG64 EndOffset
  622. );
  623. STDMETHOD(Disassemble)(
  624. THIS_
  625. IN ULONG64 Offset,
  626. IN ULONG Flags,
  627. OUT OPTIONAL PSTR Buffer,
  628. IN ULONG BufferSize,
  629. OUT OPTIONAL PULONG DisassemblySize,
  630. OUT PULONG64 EndOffset
  631. );
  632. STDMETHOD(GetDisassembleEffectiveOffset)(
  633. THIS_
  634. OUT PULONG64 Offset
  635. );
  636. STDMETHOD(OutputDisassembly)(
  637. THIS_
  638. IN ULONG OutputControl,
  639. IN ULONG64 Offset,
  640. IN ULONG Flags,
  641. OUT PULONG64 EndOffset
  642. );
  643. STDMETHOD(OutputDisassemblyLines)(
  644. THIS_
  645. IN ULONG OutputControl,
  646. IN ULONG PreviousLines,
  647. IN ULONG TotalLines,
  648. IN ULONG64 Offset,
  649. IN ULONG Flags,
  650. OUT OPTIONAL PULONG OffsetLine,
  651. OUT OPTIONAL PULONG64 StartOffset,
  652. OUT OPTIONAL PULONG64 EndOffset,
  653. OUT OPTIONAL /* size_is(TotalLines) */ PULONG64 LineOffsets
  654. );
  655. STDMETHOD(GetNearInstruction)(
  656. THIS_
  657. IN ULONG64 Offset,
  658. IN LONG Delta,
  659. OUT PULONG64 NearOffset
  660. );
  661. STDMETHOD(GetStackTrace)(
  662. THIS_
  663. IN ULONG64 FrameOffset,
  664. IN ULONG64 StackOffset,
  665. IN ULONG64 InstructionOffset,
  666. OUT PDEBUG_STACK_FRAME Frames,
  667. IN ULONG FramesSize,
  668. OUT PULONG FramesFilled
  669. );
  670. STDMETHOD(GetReturnOffset)(
  671. THIS_
  672. OUT PULONG64 Offset
  673. );
  674. STDMETHOD(OutputStackTrace)(
  675. THIS_
  676. IN ULONG OutputControl,
  677. IN PDEBUG_STACK_FRAME Frames,
  678. IN ULONG FramesSize,
  679. IN ULONG Flags
  680. );
  681. STDMETHOD(GetDebuggeeType)(
  682. THIS_
  683. OUT PULONG Class,
  684. OUT PULONG Qualifier
  685. );
  686. STDMETHOD(GetActualProcessorType)(
  687. THIS_
  688. OUT PULONG Type
  689. );
  690. STDMETHOD(GetExecutingProcessorType)(
  691. THIS_
  692. OUT PULONG Type
  693. );
  694. STDMETHOD(GetNumberPossibleExecutingProcessorTypes)(
  695. THIS_
  696. OUT PULONG Number
  697. );
  698. STDMETHOD(GetPossibleExecutingProcessorTypes)(
  699. THIS_
  700. IN ULONG Start,
  701. IN ULONG Count,
  702. OUT PULONG Types
  703. );
  704. STDMETHOD(GetNumberProcessors)(
  705. THIS_
  706. OUT PULONG Number
  707. );
  708. STDMETHOD(GetSystemVersion)(
  709. THIS_
  710. OUT PULONG PlatformId,
  711. OUT PULONG Major,
  712. OUT PULONG Minor,
  713. OUT OPTIONAL PSTR ServicePackString,
  714. IN ULONG ServicePackStringSize,
  715. OUT OPTIONAL PULONG ServicePackStringUsed,
  716. OUT PULONG ServicePackNumber,
  717. OUT OPTIONAL PSTR BuildString,
  718. IN ULONG BuildStringSize,
  719. OUT OPTIONAL PULONG BuildStringUsed
  720. );
  721. STDMETHOD(GetPageSize)(
  722. THIS_
  723. OUT PULONG Size
  724. );
  725. STDMETHOD(IsPointer64Bit)(
  726. THIS
  727. );
  728. STDMETHOD(ReadBugCheckData)(
  729. THIS_
  730. OUT PULONG Code,
  731. OUT PULONG64 Arg1,
  732. OUT PULONG64 Arg2,
  733. OUT PULONG64 Arg3,
  734. OUT PULONG64 Arg4
  735. );
  736. STDMETHOD(GetNumberSupportedProcessorTypes)(
  737. THIS_
  738. OUT PULONG Number
  739. );
  740. STDMETHOD(GetSupportedProcessorTypes)(
  741. THIS_
  742. IN ULONG Start,
  743. IN ULONG Count,
  744. OUT PULONG Types
  745. );
  746. STDMETHOD(GetProcessorTypeNames)(
  747. THIS_
  748. IN ULONG Type,
  749. OUT OPTIONAL PSTR FullNameBuffer,
  750. IN ULONG FullNameBufferSize,
  751. OUT OPTIONAL PULONG FullNameSize,
  752. OUT OPTIONAL PSTR AbbrevNameBuffer,
  753. IN ULONG AbbrevNameBufferSize,
  754. OUT OPTIONAL PULONG AbbrevNameSize
  755. );
  756. STDMETHOD(GetEffectiveProcessorType)(
  757. THIS_
  758. OUT PULONG Type
  759. );
  760. STDMETHOD(SetEffectiveProcessorType)(
  761. THIS_
  762. IN ULONG Type
  763. );
  764. STDMETHOD(GetExecutionStatus)(
  765. THIS_
  766. OUT PULONG Status
  767. );
  768. STDMETHOD(SetExecutionStatus)(
  769. THIS_
  770. IN ULONG Status
  771. );
  772. STDMETHOD(GetCodeLevel)(
  773. THIS_
  774. OUT PULONG Level
  775. );
  776. STDMETHOD(SetCodeLevel)(
  777. THIS_
  778. IN ULONG Level
  779. );
  780. STDMETHOD(GetEngineOptions)(
  781. THIS_
  782. OUT PULONG Options
  783. );
  784. STDMETHOD(AddEngineOptions)(
  785. THIS_
  786. IN ULONG Options
  787. );
  788. STDMETHOD(RemoveEngineOptions)(
  789. THIS_
  790. IN ULONG Options
  791. );
  792. STDMETHOD(SetEngineOptions)(
  793. THIS_
  794. IN ULONG Options
  795. );
  796. STDMETHOD(GetSystemErrorControl)(
  797. THIS_
  798. OUT PULONG OutputLevel,
  799. OUT PULONG BreakLevel
  800. );
  801. STDMETHOD(SetSystemErrorControl)(
  802. THIS_
  803. IN ULONG OutputLevel,
  804. IN ULONG BreakLevel
  805. );
  806. STDMETHOD(GetTextMacro)(
  807. THIS_
  808. IN ULONG Slot,
  809. OUT OPTIONAL PSTR Buffer,
  810. IN ULONG BufferSize,
  811. OUT OPTIONAL PULONG MacroSize
  812. );
  813. STDMETHOD(SetTextMacro)(
  814. THIS_
  815. IN ULONG Slot,
  816. IN PCSTR Macro
  817. );
  818. STDMETHOD(GetRadix)(
  819. THIS_
  820. OUT PULONG Radix
  821. );
  822. STDMETHOD(SetRadix)(
  823. THIS_
  824. IN ULONG Radix
  825. );
  826. STDMETHOD(Evaluate)(
  827. THIS_
  828. IN PCSTR Expression,
  829. IN ULONG DesiredType,
  830. OUT PDEBUG_VALUE Value,
  831. OUT OPTIONAL PULONG RemainderIndex
  832. );
  833. STDMETHOD(CoerceValue)(
  834. THIS_
  835. IN PDEBUG_VALUE In,
  836. IN ULONG OutType,
  837. OUT PDEBUG_VALUE Out
  838. );
  839. STDMETHOD(CoerceValues)(
  840. THIS_
  841. IN ULONG Count,
  842. IN /* size_is(Count) */ PDEBUG_VALUE In,
  843. IN /* size_is(Count) */ PULONG OutTypes,
  844. OUT /* size_is(Count) */ PDEBUG_VALUE Out
  845. );
  846. STDMETHOD(Execute)(
  847. THIS_
  848. IN ULONG OutputControl,
  849. IN PCSTR Command,
  850. IN ULONG Flags
  851. );
  852. STDMETHOD(ExecuteCommandFile)(
  853. THIS_
  854. IN ULONG OutputControl,
  855. IN PCSTR CommandFile,
  856. IN ULONG Flags
  857. );
  858. STDMETHOD(GetNumberBreakpoints)(
  859. THIS_
  860. OUT PULONG Number
  861. );
  862. STDMETHOD(GetBreakpointByIndex)(
  863. THIS_
  864. IN ULONG Index,
  865. OUT PDEBUG_BREAKPOINT* Bp
  866. );
  867. STDMETHOD(GetBreakpointById)(
  868. THIS_
  869. IN ULONG Id,
  870. OUT PDEBUG_BREAKPOINT* Bp
  871. );
  872. STDMETHOD(GetBreakpointParameters)(
  873. THIS_
  874. IN ULONG Count,
  875. IN OPTIONAL /* size_is(Count) */ PULONG Ids,
  876. IN ULONG Start,
  877. OUT /* size_is(Count) */ PDEBUG_BREAKPOINT_PARAMETERS Params
  878. );
  879. STDMETHOD(AddBreakpoint)(
  880. THIS_
  881. IN ULONG Type,
  882. IN ULONG DesiredId,
  883. OUT PDEBUG_BREAKPOINT* Bp
  884. );
  885. STDMETHOD(RemoveBreakpoint)(
  886. THIS_
  887. IN PDEBUG_BREAKPOINT Bp
  888. );
  889. STDMETHOD(AddExtension)(
  890. THIS_
  891. IN PCSTR Path,
  892. IN ULONG Flags,
  893. OUT PULONG64 Handle
  894. );
  895. STDMETHOD(RemoveExtension)(
  896. THIS_
  897. IN ULONG64 Handle
  898. );
  899. STDMETHOD(GetExtensionByPath)(
  900. THIS_
  901. IN PCSTR Path,
  902. OUT PULONG64 Handle
  903. );
  904. STDMETHOD(CallExtension)(
  905. THIS_
  906. IN OPTIONAL ULONG64 Handle,
  907. IN PCSTR Function,
  908. IN OPTIONAL PCSTR Arguments
  909. );
  910. STDMETHOD(GetExtensionFunction)(
  911. THIS_
  912. IN ULONG64 Handle,
  913. IN PCSTR FuncName,
  914. OUT FARPROC* Function
  915. );
  916. STDMETHOD(GetWindbgExtensionApis32)(
  917. THIS_
  918. IN OUT PWINDBG_EXTENSION_APIS32 Api
  919. );
  920. STDMETHOD(GetWindbgExtensionApis64)(
  921. THIS_
  922. IN OUT PWINDBG_EXTENSION_APIS64 Api
  923. );
  924. STDMETHOD(GetNumberEventFilters)(
  925. THIS_
  926. OUT PULONG SpecificEvents,
  927. OUT PULONG SpecificExceptions,
  928. OUT PULONG ArbitraryExceptions
  929. );
  930. STDMETHOD(GetEventFilterText)(
  931. THIS_
  932. IN ULONG Index,
  933. OUT OPTIONAL PSTR Buffer,
  934. IN ULONG BufferSize,
  935. OUT OPTIONAL PULONG TextSize
  936. );
  937. STDMETHOD(GetEventFilterCommand)(
  938. THIS_
  939. IN ULONG Index,
  940. OUT OPTIONAL PSTR Buffer,
  941. IN ULONG BufferSize,
  942. OUT OPTIONAL PULONG CommandSize
  943. );
  944. STDMETHOD(SetEventFilterCommand)(
  945. THIS_
  946. IN ULONG Index,
  947. IN PCSTR Command
  948. );
  949. STDMETHOD(GetSpecificFilterParameters)(
  950. THIS_
  951. IN ULONG Start,
  952. IN ULONG Count,
  953. OUT /* size_is(Count) */ PDEBUG_SPECIFIC_FILTER_PARAMETERS Params
  954. );
  955. STDMETHOD(SetSpecificFilterParameters)(
  956. THIS_
  957. IN ULONG Start,
  958. IN ULONG Count,
  959. IN /* size_is(Count) */ PDEBUG_SPECIFIC_FILTER_PARAMETERS Params
  960. );
  961. STDMETHOD(GetSpecificFilterArgument)(
  962. THIS_
  963. IN ULONG Index,
  964. OUT OPTIONAL PSTR Buffer,
  965. IN ULONG BufferSize,
  966. OUT OPTIONAL PULONG ArgumentSize
  967. );
  968. STDMETHOD(SetSpecificFilterArgument)(
  969. THIS_
  970. IN ULONG Index,
  971. IN PCSTR Argument
  972. );
  973. STDMETHOD(GetExceptionFilterParameters)(
  974. THIS_
  975. IN ULONG Count,
  976. IN OPTIONAL /* size_is(Count) */ PULONG Codes,
  977. IN ULONG Start,
  978. OUT /* size_is(Count) */ PDEBUG_EXCEPTION_FILTER_PARAMETERS Params
  979. );
  980. STDMETHOD(SetExceptionFilterParameters)(
  981. THIS_
  982. IN ULONG Count,
  983. IN /* size_is(Count) */ PDEBUG_EXCEPTION_FILTER_PARAMETERS Params
  984. );
  985. STDMETHOD(GetExceptionFilterSecondCommand)(
  986. THIS_
  987. IN ULONG Index,
  988. OUT OPTIONAL PSTR Buffer,
  989. IN ULONG BufferSize,
  990. OUT OPTIONAL PULONG CommandSize
  991. );
  992. STDMETHOD(SetExceptionFilterSecondCommand)(
  993. THIS_
  994. IN ULONG Index,
  995. IN PCSTR Command
  996. );
  997. STDMETHOD(WaitForEvent)(
  998. THIS_
  999. IN ULONG Flags,
  1000. IN ULONG Timeout
  1001. );
  1002. STDMETHOD(GetLastEventInformation)(
  1003. THIS_
  1004. PULONG Type,
  1005. OUT PULONG ProcessId,
  1006. OUT PULONG ThreadId,
  1007. OUT OPTIONAL PVOID ExtraInformation,
  1008. IN ULONG ExtraInformationSize,
  1009. OUT OPTIONAL PULONG ExtraInformationUsed,
  1010. OUT OPTIONAL PSTR Description,
  1011. IN ULONG DescriptionSize,
  1012. OUT OPTIONAL PULONG DescriptionUsed
  1013. );
  1014. STDMETHOD(GetCurrentTimeDate)(
  1015. THIS_
  1016. OUT PULONG TimeDate
  1017. );
  1018. STDMETHOD(GetCurrentSystemUpTime)(
  1019. THIS_
  1020. OUT PULONG UpTime
  1021. );
  1022. STDMETHOD(GetDumpFormatFlags)(
  1023. THIS_
  1024. OUT PULONG FormatFlags
  1025. );
  1026. STDMETHOD(GetNumberTextReplacements)(
  1027. THIS_
  1028. OUT PULONG NumRepl
  1029. );
  1030. STDMETHOD(GetTextReplacement)(
  1031. THIS_
  1032. IN OPTIONAL PCSTR SrcText,
  1033. IN ULONG Index,
  1034. OUT OPTIONAL PSTR SrcBuffer,
  1035. IN ULONG SrcBufferSize,
  1036. OUT OPTIONAL PULONG SrcSize,
  1037. OUT OPTIONAL PSTR DstBuffer,
  1038. IN ULONG DstBufferSize,
  1039. OUT OPTIONAL PULONG DstSize
  1040. );
  1041. STDMETHOD(SetTextReplacement)(
  1042. THIS_
  1043. IN PCSTR SrcText,
  1044. IN OPTIONAL PCSTR DstText
  1045. );
  1046. STDMETHOD(RemoveTextReplacements)(
  1047. THIS
  1048. );
  1049. STDMETHOD(OutputTextReplacements)(
  1050. THIS_
  1051. IN ULONG OutputControl,
  1052. IN ULONG Flags
  1053. );
  1054. STDMETHOD(GetAssemblyOptions)(
  1055. THIS_
  1056. OUT PULONG Options
  1057. );
  1058. STDMETHOD(AddAssemblyOptions)(
  1059. THIS_
  1060. IN ULONG Options
  1061. );
  1062. STDMETHOD(RemoveAssemblyOptions)(
  1063. THIS_
  1064. IN ULONG Options
  1065. );
  1066. STDMETHOD(SetAssemblyOptions)(
  1067. THIS_
  1068. IN ULONG Options
  1069. );
  1070. STDMETHOD(GetExpressionSyntax)(
  1071. THIS_
  1072. OUT PULONG Flags
  1073. );
  1074. STDMETHOD(SetExpressionSyntax)(
  1075. THIS_
  1076. IN ULONG Flags
  1077. );
  1078. STDMETHOD(SetExpressionSyntaxByName)(
  1079. THIS_
  1080. IN PCSTR AbbrevName
  1081. );
  1082. STDMETHOD(GetNumberExpressionSyntaxes)(
  1083. THIS_
  1084. OUT PULONG Number
  1085. );
  1086. STDMETHOD(GetExpressionSyntaxNames)(
  1087. THIS_
  1088. IN ULONG Index,
  1089. OUT OPTIONAL PSTR FullNameBuffer,
  1090. IN ULONG FullNameBufferSize,
  1091. OUT OPTIONAL PULONG FullNameSize,
  1092. OUT OPTIONAL PSTR AbbrevNameBuffer,
  1093. IN ULONG AbbrevNameBufferSize,
  1094. OUT OPTIONAL PULONG AbbrevNameSize
  1095. );
  1096. STDMETHOD(GetNumberEvents)(
  1097. THIS_
  1098. OUT PULONG Events
  1099. );
  1100. STDMETHOD(GetEventIndexDescription)(
  1101. THIS_
  1102. IN ULONG Index,
  1103. IN ULONG Which,
  1104. IN OPTIONAL PSTR Buffer,
  1105. IN ULONG BufferSize,
  1106. OUT OPTIONAL PULONG DescSize
  1107. );
  1108. STDMETHOD(GetCurrentEventIndex)(
  1109. THIS_
  1110. OUT PULONG Index
  1111. );
  1112. STDMETHOD(SetNextEventIndex)(
  1113. THIS_
  1114. IN ULONG Relation,
  1115. IN ULONG Value,
  1116. OUT PULONG NextIndex
  1117. );
  1118. // IDebugDataSpaces-3.
  1119. STDMETHOD(ReadVirtual)(
  1120. THIS_
  1121. IN ULONG64 Offset,
  1122. OUT PVOID Buffer,
  1123. IN ULONG BufferSize,
  1124. OUT OPTIONAL PULONG BytesRead
  1125. );
  1126. STDMETHOD(WriteVirtual)(
  1127. THIS_
  1128. IN ULONG64 Offset,
  1129. IN PVOID Buffer,
  1130. IN ULONG BufferSize,
  1131. OUT OPTIONAL PULONG BytesWritten
  1132. );
  1133. STDMETHOD(SearchVirtual)(
  1134. THIS_
  1135. IN ULONG64 Offset,
  1136. IN ULONG64 Length,
  1137. IN PVOID Pattern,
  1138. IN ULONG PatternSize,
  1139. IN ULONG PatternGranularity,
  1140. OUT PULONG64 MatchOffset
  1141. );
  1142. STDMETHOD(ReadVirtualUncached)(
  1143. THIS_
  1144. IN ULONG64 Offset,
  1145. OUT PVOID Buffer,
  1146. IN ULONG BufferSize,
  1147. OUT OPTIONAL PULONG BytesRead
  1148. );
  1149. STDMETHOD(WriteVirtualUncached)(
  1150. THIS_
  1151. IN ULONG64 Offset,
  1152. IN PVOID Buffer,
  1153. IN ULONG BufferSize,
  1154. OUT OPTIONAL PULONG BytesWritten
  1155. );
  1156. STDMETHOD(ReadPointersVirtual)(
  1157. THIS_
  1158. IN ULONG Count,
  1159. IN ULONG64 Offset,
  1160. OUT /* size_is(Count) */ PULONG64 Ptrs
  1161. );
  1162. STDMETHOD(WritePointersVirtual)(
  1163. THIS_
  1164. IN ULONG Count,
  1165. IN ULONG64 Offset,
  1166. IN /* size_is(Count) */ PULONG64 Ptrs
  1167. );
  1168. STDMETHOD(ReadPhysical)(
  1169. THIS_
  1170. IN ULONG64 Offset,
  1171. OUT PVOID Buffer,
  1172. IN ULONG BufferSize,
  1173. OUT OPTIONAL PULONG BytesRead
  1174. );
  1175. STDMETHOD(WritePhysical)(
  1176. THIS_
  1177. IN ULONG64 Offset,
  1178. IN PVOID Buffer,
  1179. IN ULONG BufferSize,
  1180. OUT OPTIONAL PULONG BytesWritten
  1181. );
  1182. STDMETHOD(ReadControl)(
  1183. THIS_
  1184. IN ULONG Processor,
  1185. IN ULONG64 Offset,
  1186. OUT PVOID Buffer,
  1187. IN ULONG BufferSize,
  1188. OUT OPTIONAL PULONG BytesRead
  1189. );
  1190. STDMETHOD(WriteControl)(
  1191. THIS_
  1192. IN ULONG Processor,
  1193. IN ULONG64 Offset,
  1194. IN PVOID Buffer,
  1195. IN ULONG BufferSize,
  1196. OUT OPTIONAL PULONG BytesWritten
  1197. );
  1198. STDMETHOD(ReadIo)(
  1199. THIS_
  1200. IN ULONG InterfaceType,
  1201. IN ULONG BusNumber,
  1202. IN ULONG AddressSpace,
  1203. IN ULONG64 Offset,
  1204. OUT PVOID Buffer,
  1205. IN ULONG BufferSize,
  1206. OUT OPTIONAL PULONG BytesRead
  1207. );
  1208. STDMETHOD(WriteIo)(
  1209. THIS_
  1210. IN ULONG InterfaceType,
  1211. IN ULONG BusNumber,
  1212. IN ULONG AddressSpace,
  1213. IN ULONG64 Offset,
  1214. IN PVOID Buffer,
  1215. IN ULONG BufferSize,
  1216. OUT OPTIONAL PULONG BytesWritten
  1217. );
  1218. STDMETHOD(ReadMsr)(
  1219. THIS_
  1220. IN ULONG Msr,
  1221. OUT PULONG64 Value
  1222. );
  1223. STDMETHOD(WriteMsr)(
  1224. THIS_
  1225. IN ULONG Msr,
  1226. IN ULONG64 Value
  1227. );
  1228. STDMETHOD(ReadBusData)(
  1229. THIS_
  1230. IN ULONG BusDataType,
  1231. IN ULONG BusNumber,
  1232. IN ULONG SlotNumber,
  1233. IN ULONG Offset,
  1234. OUT PVOID Buffer,
  1235. IN ULONG BufferSize,
  1236. OUT OPTIONAL PULONG BytesRead
  1237. );
  1238. STDMETHOD(WriteBusData)(
  1239. THIS_
  1240. IN ULONG BusDataType,
  1241. IN ULONG BusNumber,
  1242. IN ULONG SlotNumber,
  1243. IN ULONG Offset,
  1244. IN PVOID Buffer,
  1245. IN ULONG BufferSize,
  1246. OUT OPTIONAL PULONG BytesWritten
  1247. );
  1248. STDMETHOD(CheckLowMemory)(
  1249. THIS
  1250. );
  1251. STDMETHOD(ReadDebuggerData)(
  1252. THIS_
  1253. IN ULONG Index,
  1254. OUT PVOID Buffer,
  1255. IN ULONG BufferSize,
  1256. OUT OPTIONAL PULONG BytesRead
  1257. );
  1258. STDMETHOD(ReadProcessorSystemData)(
  1259. THIS_
  1260. IN ULONG Processor,
  1261. IN ULONG Index,
  1262. OUT PVOID Buffer,
  1263. IN ULONG BufferSize,
  1264. OUT OPTIONAL PULONG BytesRead
  1265. );
  1266. STDMETHOD(VirtualToPhysical)(
  1267. THIS_
  1268. IN ULONG64 Virtual,
  1269. OUT PULONG64 Physical
  1270. );
  1271. STDMETHOD(GetVirtualTranslationPhysicalOffsets)(
  1272. THIS_
  1273. IN ULONG64 Virtual,
  1274. OUT OPTIONAL /* size_is(OffsetsSize) */ PULONG64 Offsets,
  1275. IN ULONG OffsetsSize,
  1276. OUT OPTIONAL PULONG Levels
  1277. );
  1278. STDMETHOD(ReadHandleData)(
  1279. THIS_
  1280. IN ULONG64 Handle,
  1281. IN ULONG DataType,
  1282. OUT OPTIONAL PVOID Buffer,
  1283. IN ULONG BufferSize,
  1284. OUT OPTIONAL PULONG DataSize
  1285. );
  1286. STDMETHOD(FillVirtual)(
  1287. THIS_
  1288. IN ULONG64 Start,
  1289. IN ULONG Size,
  1290. IN PVOID Pattern,
  1291. IN ULONG PatternSize,
  1292. OUT OPTIONAL PULONG Filled
  1293. );
  1294. STDMETHOD(FillPhysical)(
  1295. THIS_
  1296. IN ULONG64 Start,
  1297. IN ULONG Size,
  1298. IN PVOID Pattern,
  1299. IN ULONG PatternSize,
  1300. OUT OPTIONAL PULONG Filled
  1301. );
  1302. STDMETHOD(QueryVirtual)(
  1303. THIS_
  1304. IN ULONG64 Offset,
  1305. OUT PMEMORY_BASIC_INFORMATION64 Info
  1306. );
  1307. STDMETHOD(ReadImageNtHeaders)(
  1308. THIS_
  1309. IN ULONG64 ImageBase,
  1310. OUT PIMAGE_NT_HEADERS64 Headers
  1311. );
  1312. STDMETHOD(ReadTagged)(
  1313. THIS_
  1314. IN LPGUID Tag,
  1315. IN ULONG Offset,
  1316. OUT OPTIONAL PVOID Buffer,
  1317. IN ULONG BufferSize,
  1318. OUT OPTIONAL PULONG TotalSize
  1319. );
  1320. STDMETHOD(StartEnumTagged)(
  1321. THIS_
  1322. OUT PULONG64 Handle
  1323. );
  1324. STDMETHOD(GetNextTagged)(
  1325. THIS_
  1326. IN ULONG64 Handle,
  1327. OUT LPGUID Tag,
  1328. OUT PULONG Size
  1329. );
  1330. STDMETHOD(EndEnumTagged)(
  1331. THIS_
  1332. IN ULONG64 Handle
  1333. );
  1334. // IDebugRegisters.
  1335. STDMETHOD(GetNumberRegisters)(
  1336. THIS_
  1337. OUT PULONG Number
  1338. );
  1339. STDMETHOD(GetDescription)(
  1340. THIS_
  1341. IN ULONG Register,
  1342. OUT OPTIONAL PSTR NameBuffer,
  1343. IN ULONG NameBufferSize,
  1344. OUT OPTIONAL PULONG NameSize,
  1345. OUT OPTIONAL PDEBUG_REGISTER_DESCRIPTION Desc
  1346. );
  1347. STDMETHOD(GetIndexByName)(
  1348. THIS_
  1349. IN PCSTR Name,
  1350. OUT PULONG Index
  1351. );
  1352. STDMETHOD(GetValue)(
  1353. THIS_
  1354. IN ULONG Register,
  1355. OUT PDEBUG_VALUE Value
  1356. );
  1357. STDMETHOD(SetValue)(
  1358. THIS_
  1359. IN ULONG Register,
  1360. IN PDEBUG_VALUE Value
  1361. );
  1362. STDMETHOD(GetValues)(
  1363. THIS_
  1364. IN ULONG Count,
  1365. IN OPTIONAL PULONG Indices,
  1366. IN ULONG Start,
  1367. OUT PDEBUG_VALUE Values
  1368. );
  1369. STDMETHOD(SetValues)(
  1370. THIS_
  1371. IN ULONG Count,
  1372. IN OPTIONAL PULONG Indices,
  1373. IN ULONG Start,
  1374. IN PDEBUG_VALUE Values
  1375. );
  1376. STDMETHOD(OutputRegisters)(
  1377. THIS_
  1378. IN ULONG OutputControl,
  1379. IN ULONG Flags
  1380. );
  1381. STDMETHOD(GetInstructionOffset)(
  1382. THIS_
  1383. OUT PULONG64 Offset
  1384. );
  1385. STDMETHOD(GetStackOffset)(
  1386. THIS_
  1387. OUT PULONG64 Offset
  1388. );
  1389. STDMETHOD(GetFrameOffset)(
  1390. THIS_
  1391. OUT PULONG64 Offset
  1392. );
  1393. // IDebugSymbols and IDebugSymbols2.
  1394. STDMETHOD(GetSymbolOptions)(
  1395. THIS_
  1396. OUT PULONG Options
  1397. );
  1398. STDMETHOD(AddSymbolOptions)(
  1399. THIS_
  1400. IN ULONG Options
  1401. );
  1402. STDMETHOD(RemoveSymbolOptions)(
  1403. THIS_
  1404. IN ULONG Options
  1405. );
  1406. STDMETHOD(SetSymbolOptions)(
  1407. THIS_
  1408. IN ULONG Options
  1409. );
  1410. STDMETHOD(GetNameByOffset)(
  1411. THIS_
  1412. IN ULONG64 Offset,
  1413. OUT OPTIONAL PSTR NameBuffer,
  1414. IN ULONG NameBufferSize,
  1415. OUT OPTIONAL PULONG NameSize,
  1416. OUT OPTIONAL PULONG64 Displacement
  1417. );
  1418. STDMETHOD(GetOffsetByName)(
  1419. THIS_
  1420. IN PCSTR Symbol,
  1421. OUT PULONG64 Offset
  1422. );
  1423. STDMETHOD(GetNearNameByOffset)(
  1424. THIS_
  1425. IN ULONG64 Offset,
  1426. IN LONG Delta,
  1427. OUT OPTIONAL PSTR NameBuffer,
  1428. IN ULONG NameBufferSize,
  1429. OUT OPTIONAL PULONG NameSize,
  1430. OUT OPTIONAL PULONG64 Displacement
  1431. );
  1432. STDMETHOD(GetLineByOffset)(
  1433. THIS_
  1434. IN ULONG64 Offset,
  1435. OUT PULONG Line,
  1436. OUT OPTIONAL PSTR FileBuffer,
  1437. IN ULONG FileBufferSize,
  1438. OUT OPTIONAL PULONG FileSize,
  1439. OUT OPTIONAL PULONG64 Displacement
  1440. );
  1441. STDMETHOD(GetOffsetByLine)(
  1442. THIS_
  1443. IN ULONG Line,
  1444. IN PCSTR File,
  1445. OUT PULONG64 Offset
  1446. );
  1447. STDMETHOD(GetNumberModules)(
  1448. THIS_
  1449. OUT PULONG Loaded,
  1450. OUT PULONG Unloaded
  1451. );
  1452. STDMETHOD(GetModuleByIndex)(
  1453. THIS_
  1454. IN ULONG Index,
  1455. OUT PULONG64 Base
  1456. );
  1457. STDMETHOD(GetModuleByModuleName)(
  1458. THIS_
  1459. IN PCSTR Name,
  1460. IN ULONG StartIndex,
  1461. OUT OPTIONAL PULONG Index,
  1462. OUT OPTIONAL PULONG64 Base
  1463. );
  1464. STDMETHOD(GetModuleByOffset)(
  1465. THIS_
  1466. IN ULONG64 Offset,
  1467. IN ULONG StartIndex,
  1468. OUT OPTIONAL PULONG Index,
  1469. OUT OPTIONAL PULONG64 Base
  1470. );
  1471. STDMETHOD(GetModuleNames)(
  1472. THIS_
  1473. IN ULONG Index,
  1474. IN ULONG64 Base,
  1475. OUT OPTIONAL PSTR ImageNameBuffer,
  1476. IN ULONG ImageNameBufferSize,
  1477. OUT OPTIONAL PULONG ImageNameSize,
  1478. OUT OPTIONAL PSTR ModuleNameBuffer,
  1479. IN ULONG ModuleNameBufferSize,
  1480. OUT OPTIONAL PULONG ModuleNameSize,
  1481. OUT OPTIONAL PSTR LoadedImageNameBuffer,
  1482. IN ULONG LoadedImageNameBufferSize,
  1483. OUT OPTIONAL PULONG LoadedImageNameSize
  1484. );
  1485. STDMETHOD(GetModuleParameters)(
  1486. THIS_
  1487. IN ULONG Count,
  1488. IN OPTIONAL /* size_is(Count) */ PULONG64 Bases,
  1489. IN ULONG Start,
  1490. OUT /* size_is(Count) */ PDEBUG_MODULE_PARAMETERS Params
  1491. );
  1492. STDMETHOD(GetSymbolModule)(
  1493. THIS_
  1494. IN PCSTR Symbol,
  1495. OUT PULONG64 Base
  1496. );
  1497. STDMETHOD(GetTypeName)(
  1498. THIS_
  1499. IN ULONG64 Module,
  1500. IN ULONG TypeId,
  1501. OUT OPTIONAL PSTR NameBuffer,
  1502. IN ULONG NameBufferSize,
  1503. OUT OPTIONAL PULONG NameSize
  1504. );
  1505. STDMETHOD(GetTypeId)(
  1506. THIS_
  1507. IN ULONG64 Module,
  1508. IN PCSTR Name,
  1509. OUT PULONG TypeId
  1510. );
  1511. STDMETHOD(GetTypeSize)(
  1512. THIS_
  1513. IN ULONG64 Module,
  1514. IN ULONG TypeId,
  1515. OUT PULONG Size
  1516. );
  1517. STDMETHOD(GetFieldOffset)(
  1518. THIS_
  1519. IN ULONG64 Module,
  1520. IN ULONG TypeId,
  1521. IN PCSTR Field,
  1522. OUT PULONG Offset
  1523. );
  1524. STDMETHOD(GetSymbolTypeId)(
  1525. THIS_
  1526. IN PCSTR Symbol,
  1527. OUT PULONG TypeId,
  1528. OUT OPTIONAL PULONG64 Module
  1529. );
  1530. STDMETHOD(GetOffsetTypeId)(
  1531. THIS_
  1532. IN ULONG64 Offset,
  1533. OUT PULONG TypeId,
  1534. OUT OPTIONAL PULONG64 Module
  1535. );
  1536. STDMETHOD(ReadTypedDataVirtual)(
  1537. THIS_
  1538. IN ULONG64 Offset,
  1539. IN ULONG64 Module,
  1540. IN ULONG TypeId,
  1541. OUT PVOID Buffer,
  1542. IN ULONG BufferSize,
  1543. OUT OPTIONAL PULONG BytesRead
  1544. );
  1545. STDMETHOD(WriteTypedDataVirtual)(
  1546. THIS_
  1547. IN ULONG64 Offset,
  1548. IN ULONG64 Module,
  1549. IN ULONG TypeId,
  1550. IN PVOID Buffer,
  1551. IN ULONG BufferSize,
  1552. OUT OPTIONAL PULONG BytesWritten
  1553. );
  1554. STDMETHOD(OutputTypedDataVirtual)(
  1555. THIS_
  1556. IN ULONG OutputControl,
  1557. IN ULONG64 Offset,
  1558. IN ULONG64 Module,
  1559. IN ULONG TypeId,
  1560. IN ULONG Flags
  1561. );
  1562. STDMETHOD(ReadTypedDataPhysical)(
  1563. THIS_
  1564. IN ULONG64 Offset,
  1565. IN ULONG64 Module,
  1566. IN ULONG TypeId,
  1567. OUT PVOID Buffer,
  1568. IN ULONG BufferSize,
  1569. OUT OPTIONAL PULONG BytesRead
  1570. );
  1571. STDMETHOD(WriteTypedDataPhysical)(
  1572. THIS_
  1573. IN ULONG64 Offset,
  1574. IN ULONG64 Module,
  1575. IN ULONG TypeId,
  1576. IN PVOID Buffer,
  1577. IN ULONG BufferSize,
  1578. OUT OPTIONAL PULONG BytesWritten
  1579. );
  1580. STDMETHOD(OutputTypedDataPhysical)(
  1581. THIS_
  1582. IN ULONG OutputControl,
  1583. IN ULONG64 Offset,
  1584. IN ULONG64 Module,
  1585. IN ULONG TypeId,
  1586. IN ULONG Flags
  1587. );
  1588. STDMETHOD(GetScope)(
  1589. THIS_
  1590. OUT OPTIONAL PULONG64 InstructionOffset,
  1591. OUT OPTIONAL PDEBUG_STACK_FRAME ScopeFrame,
  1592. OUT OPTIONAL PVOID ScopeContext,
  1593. IN ULONG ScopeContextSize
  1594. );
  1595. STDMETHOD(SetScope)(
  1596. THIS_
  1597. IN ULONG64 InstructionOffset,
  1598. IN OPTIONAL PDEBUG_STACK_FRAME ScopeFrame,
  1599. IN OPTIONAL PVOID ScopeContext,
  1600. IN ULONG ScopeContextSize
  1601. );
  1602. STDMETHOD(ResetScope)(
  1603. THIS
  1604. );
  1605. STDMETHOD(GetScopeSymbolGroup)(
  1606. THIS_
  1607. IN ULONG Flags,
  1608. IN OPTIONAL PDEBUG_SYMBOL_GROUP Update,
  1609. OUT PDEBUG_SYMBOL_GROUP* Symbols
  1610. );
  1611. STDMETHOD(CreateSymbolGroup)(
  1612. THIS_
  1613. OUT PDEBUG_SYMBOL_GROUP* Group
  1614. );
  1615. STDMETHOD(StartSymbolMatch)(
  1616. THIS_
  1617. IN PCSTR Pattern,
  1618. OUT PULONG64 Handle
  1619. );
  1620. STDMETHOD(GetNextSymbolMatch)(
  1621. THIS_
  1622. IN ULONG64 Handle,
  1623. OUT OPTIONAL PSTR Buffer,
  1624. IN ULONG BufferSize,
  1625. OUT OPTIONAL PULONG MatchSize,
  1626. OUT OPTIONAL PULONG64 Offset
  1627. );
  1628. STDMETHOD(EndSymbolMatch)(
  1629. THIS_
  1630. IN ULONG64 Handle
  1631. );
  1632. STDMETHOD(Reload)(
  1633. THIS_
  1634. IN PCSTR Module
  1635. );
  1636. STDMETHOD(GetSymbolPath)(
  1637. THIS_
  1638. OUT OPTIONAL PSTR Buffer,
  1639. IN ULONG BufferSize,
  1640. OUT OPTIONAL PULONG PathSize
  1641. );
  1642. STDMETHOD(SetSymbolPath)(
  1643. THIS_
  1644. IN PCSTR Path
  1645. );
  1646. STDMETHOD(AppendSymbolPath)(
  1647. THIS_
  1648. IN PCSTR Addition
  1649. );
  1650. STDMETHOD(GetImagePath)(
  1651. THIS_
  1652. OUT OPTIONAL PSTR Buffer,
  1653. IN ULONG BufferSize,
  1654. OUT OPTIONAL PULONG PathSize
  1655. );
  1656. STDMETHOD(SetImagePath)(
  1657. THIS_
  1658. IN PCSTR Path
  1659. );
  1660. STDMETHOD(AppendImagePath)(
  1661. THIS_
  1662. IN PCSTR Addition
  1663. );
  1664. STDMETHOD(GetSourcePath)(
  1665. THIS_
  1666. OUT OPTIONAL PSTR Buffer,
  1667. IN ULONG BufferSize,
  1668. OUT OPTIONAL PULONG PathSize
  1669. );
  1670. STDMETHOD(GetSourcePathElement)(
  1671. THIS_
  1672. IN ULONG Index,
  1673. OUT OPTIONAL PSTR Buffer,
  1674. IN ULONG BufferSize,
  1675. OUT OPTIONAL PULONG PathSize
  1676. );
  1677. STDMETHOD(SetSourcePath)(
  1678. THIS_
  1679. IN PCSTR Path
  1680. );
  1681. STDMETHOD(AppendSourcePath)(
  1682. THIS_
  1683. IN PCSTR Addition
  1684. );
  1685. STDMETHOD(FindSourceFile)(
  1686. THIS_
  1687. IN ULONG StartElement,
  1688. IN PCSTR File,
  1689. IN ULONG Flags,
  1690. OUT OPTIONAL PULONG FoundElement,
  1691. OUT OPTIONAL PSTR Buffer,
  1692. IN ULONG BufferSize,
  1693. OUT OPTIONAL PULONG FoundSize
  1694. );
  1695. STDMETHOD(GetSourceFileLineOffsets)(
  1696. THIS_
  1697. IN PCSTR File,
  1698. OUT OPTIONAL PULONG64 Buffer,
  1699. IN ULONG BufferLines,
  1700. OUT OPTIONAL PULONG FileLines
  1701. );
  1702. STDMETHOD(GetModuleVersionInformation)(
  1703. THIS_
  1704. IN ULONG Index,
  1705. IN ULONG64 Base,
  1706. IN PCSTR Item,
  1707. OUT OPTIONAL PVOID Buffer,
  1708. IN ULONG BufferSize,
  1709. OUT OPTIONAL PULONG VerInfoSize
  1710. );
  1711. STDMETHOD(GetModuleNameString)(
  1712. THIS_
  1713. IN ULONG Which,
  1714. IN ULONG Index,
  1715. IN ULONG64 Base,
  1716. OUT OPTIONAL PSTR Buffer,
  1717. IN ULONG BufferSize,
  1718. OUT OPTIONAL PULONG NameSize
  1719. );
  1720. STDMETHOD(GetConstantName)(
  1721. THIS_
  1722. IN ULONG64 Module,
  1723. IN ULONG TypeId,
  1724. IN ULONG64 Value,
  1725. OUT OPTIONAL PSTR NameBuffer,
  1726. IN ULONG NameBufferSize,
  1727. OUT OPTIONAL PULONG NameSize
  1728. );
  1729. STDMETHOD(GetFieldName)(
  1730. THIS_
  1731. IN ULONG64 Module,
  1732. IN ULONG TypeId,
  1733. IN ULONG FieldIndex,
  1734. OUT OPTIONAL PSTR NameBuffer,
  1735. IN ULONG NameBufferSize,
  1736. OUT OPTIONAL PULONG NameSize
  1737. );
  1738. STDMETHOD(GetTypeOptions)(
  1739. THIS_
  1740. OUT PULONG Options
  1741. );
  1742. STDMETHOD(SetTypeOptions)(
  1743. THIS_
  1744. IN ULONG Options
  1745. );
  1746. STDMETHOD(AddTypeOptions)(
  1747. THIS_
  1748. IN ULONG Options
  1749. );
  1750. STDMETHOD(RemoveTypeOptions)(
  1751. THIS_
  1752. IN ULONG Options
  1753. );
  1754. // IDebugSystemObjects-3.
  1755. STDMETHOD(GetEventThread)(
  1756. THIS_
  1757. OUT PULONG Id
  1758. );
  1759. STDMETHOD(GetEventProcess)(
  1760. THIS_
  1761. OUT PULONG Id
  1762. );
  1763. STDMETHOD(GetCurrentThreadId)(
  1764. THIS_
  1765. OUT PULONG Id
  1766. );
  1767. STDMETHOD(SetCurrentThreadId)(
  1768. THIS_
  1769. IN ULONG Id
  1770. );
  1771. STDMETHOD(GetCurrentProcessId)(
  1772. THIS_
  1773. OUT PULONG Id
  1774. );
  1775. STDMETHOD(SetCurrentProcessId)(
  1776. THIS_
  1777. IN ULONG Id
  1778. );
  1779. STDMETHOD(GetNumberThreads)(
  1780. THIS_
  1781. OUT PULONG Number
  1782. );
  1783. STDMETHOD(GetTotalNumberThreads)(
  1784. THIS_
  1785. OUT PULONG Total,
  1786. OUT PULONG LargestProcess
  1787. );
  1788. STDMETHOD(GetThreadIdsByIndex)(
  1789. THIS_
  1790. IN ULONG Start,
  1791. IN ULONG Count,
  1792. OUT OPTIONAL /* size_is(Count) */ PULONG Ids,
  1793. OUT OPTIONAL /* size_is(Count) */ PULONG SysIds
  1794. );
  1795. STDMETHOD(GetThreadIdByProcessor)(
  1796. THIS_
  1797. IN ULONG Processor,
  1798. OUT PULONG Id
  1799. );
  1800. STDMETHOD(GetCurrentThreadDataOffset)(
  1801. THIS_
  1802. OUT PULONG64 Offset
  1803. );
  1804. STDMETHOD(GetThreadIdByDataOffset)(
  1805. THIS_
  1806. IN ULONG64 Offset,
  1807. OUT PULONG Id
  1808. );
  1809. STDMETHOD(GetCurrentThreadTeb)(
  1810. THIS_
  1811. OUT PULONG64 Offset
  1812. );
  1813. STDMETHOD(GetThreadIdByTeb)(
  1814. THIS_
  1815. IN ULONG64 Offset,
  1816. OUT PULONG Id
  1817. );
  1818. STDMETHOD(GetCurrentThreadSystemId)(
  1819. THIS_
  1820. OUT PULONG SysId
  1821. );
  1822. STDMETHOD(GetThreadIdBySystemId)(
  1823. THIS_
  1824. IN ULONG SysId,
  1825. OUT PULONG Id
  1826. );
  1827. STDMETHOD(GetCurrentThreadHandle)(
  1828. THIS_
  1829. OUT PULONG64 Handle
  1830. );
  1831. STDMETHOD(GetThreadIdByHandle)(
  1832. THIS_
  1833. IN ULONG64 Handle,
  1834. OUT PULONG Id
  1835. );
  1836. STDMETHOD(GetNumberProcesses)(
  1837. THIS_
  1838. OUT PULONG Number
  1839. );
  1840. STDMETHOD(GetProcessIdsByIndex)(
  1841. THIS_
  1842. IN ULONG Start,
  1843. IN ULONG Count,
  1844. OUT OPTIONAL /* size_is(Count) */ PULONG Ids,
  1845. OUT OPTIONAL /* size_is(Count) */ PULONG SysIds
  1846. );
  1847. STDMETHOD(GetCurrentProcessDataOffset)(
  1848. THIS_
  1849. OUT PULONG64 Offset
  1850. );
  1851. STDMETHOD(GetProcessIdByDataOffset)(
  1852. THIS_
  1853. IN ULONG64 Offset,
  1854. OUT PULONG Id
  1855. );
  1856. STDMETHOD(GetCurrentProcessPeb)(
  1857. THIS_
  1858. OUT PULONG64 Offset
  1859. );
  1860. STDMETHOD(GetProcessIdByPeb)(
  1861. THIS_
  1862. IN ULONG64 Offset,
  1863. OUT PULONG Id
  1864. );
  1865. STDMETHOD(GetCurrentProcessSystemId)(
  1866. THIS_
  1867. OUT PULONG SysId
  1868. );
  1869. STDMETHOD(GetProcessIdBySystemId)(
  1870. THIS_
  1871. IN ULONG SysId,
  1872. OUT PULONG Id
  1873. );
  1874. STDMETHOD(GetCurrentProcessHandle)(
  1875. THIS_
  1876. OUT PULONG64 Handle
  1877. );
  1878. STDMETHOD(GetProcessIdByHandle)(
  1879. THIS_
  1880. IN ULONG64 Handle,
  1881. OUT PULONG Id
  1882. );
  1883. STDMETHOD(GetCurrentProcessExecutableName)(
  1884. THIS_
  1885. OUT OPTIONAL PSTR Buffer,
  1886. IN ULONG BufferSize,
  1887. OUT OPTIONAL PULONG ExeSize
  1888. );
  1889. STDMETHOD(GetCurrentProcessUpTime)(
  1890. THIS_
  1891. OUT PULONG UpTime
  1892. );
  1893. STDMETHOD(GetImplicitThreadDataOffset)(
  1894. THIS_
  1895. OUT PULONG64 Offset
  1896. );
  1897. STDMETHOD(SetImplicitThreadDataOffset)(
  1898. THIS_
  1899. IN ULONG64 Offset
  1900. );
  1901. STDMETHOD(GetImplicitProcessDataOffset)(
  1902. THIS_
  1903. OUT PULONG64 Offset
  1904. );
  1905. STDMETHOD(SetImplicitProcessDataOffset)(
  1906. THIS_
  1907. IN ULONG64 Offset
  1908. );
  1909. STDMETHOD(GetEventSystem)(
  1910. THIS_
  1911. OUT PULONG Id
  1912. );
  1913. STDMETHOD(GetCurrentSystemId)(
  1914. THIS_
  1915. OUT PULONG Id
  1916. );
  1917. STDMETHOD(SetCurrentSystemId)(
  1918. THIS_
  1919. IN ULONG Id
  1920. );
  1921. STDMETHOD(GetNumberSystems)(
  1922. THIS_
  1923. OUT PULONG Number
  1924. );
  1925. STDMETHOD(GetSystemIdsByIndex)(
  1926. THIS_
  1927. IN ULONG Start,
  1928. IN ULONG Count,
  1929. OUT /* size_is(Count) */ PULONG Ids
  1930. );
  1931. STDMETHOD(GetTotalNumberThreadsAndProcesses)(
  1932. THIS_
  1933. OUT PULONG TotalThreads,
  1934. OUT PULONG TotalProcesses,
  1935. OUT PULONG LargestProcessThreads,
  1936. OUT PULONG LargestSystemThreads,
  1937. OUT PULONG LargestSystemProcesses
  1938. );
  1939. STDMETHOD(GetCurrentSystemServer)(
  1940. THIS_
  1941. OUT PULONG64 Server
  1942. );
  1943. STDMETHOD(GetSystemByServer)(
  1944. THIS_
  1945. IN ULONG64 Server,
  1946. OUT PULONG Id
  1947. );
  1948. STDMETHOD(GetCurrentSystemServerName)(
  1949. THIS_
  1950. OUT OPTIONAL PSTR Buffer,
  1951. IN ULONG BufferSize,
  1952. OUT OPTIONAL PULONG NameSize
  1953. );
  1954. // DbgRpcClientObject.
  1955. virtual HRESULT RpcInitialize(PSTR ClientIdentity, PSTR TransIdentity,
  1956. PVOID* Interface);
  1957. virtual void RpcFinalize(void);
  1958. virtual void RpcUninitialize(void);
  1959. //------------------------------------------------------------------------
  1960. // General.
  1961. HRESULT Initialize(void);
  1962. void InitializePrimary(void);
  1963. void Link(void);
  1964. void Unlink(void);
  1965. HRESULT WriteDumpFileInternal(
  1966. IN OPTIONAL PCWSTR FileName,
  1967. IN ULONG64 FileHandle,
  1968. IN ULONG Qualifier,
  1969. IN ULONG FormatFlags,
  1970. IN OPTIONAL PCSTR CommentA,
  1971. IN OPTIONAL PCWSTR CommentW
  1972. );
  1973. DebugClient* m_Next;
  1974. DebugClient* m_Prev;
  1975. ULONG m_Refs;
  1976. ULONG m_Flags;
  1977. ULONG m_ThreadId;
  1978. HANDLE m_Thread;
  1979. char m_Identity[DBGRPC_MAX_IDENTITY];
  1980. time_t m_LastActivity;
  1981. PDEBUG_EVENT_CALLBACKS m_EventCb;
  1982. ULONG m_EventInterest;
  1983. HANDLE m_DispatchSema;
  1984. PDEBUG_INPUT_CALLBACKS m_InputCb;
  1985. ULONG m_InputSequence;
  1986. PDEBUG_OUTPUT_CALLBACKS m_OutputCb;
  1987. ULONG m_OutMask;
  1988. ULONG m_OutputWidth;
  1989. PCSTR m_OutputLinePrefix;
  1990. };
  1991. DebugClient* FindClient(ULONG Tid, ULONG IncFlags, ULONG ExcFlags);
  1992. HRESULT SetEngOptions(ULONG Options);
  1993. HRESULT ClientStartServer(PCSTR Options, BOOL Wait);
  1994. ULONG GetExecutionStatus(void);
  1995. HRESULT SetExecutionStatus(ULONG Status);
  1996. HRESULT SetExprSyntax(ULONG Flags);
  1997. HRESULT SetExprSyntaxByName(PCSTR Name);
  1998. HRESULT Execute(DebugClient* Client, PCSTR Command, ULONG Flags);
  1999. HRESULT ExecuteCommandFile(DebugClient* Client, PCSTR File, ULONG Flags);
  2000. HRESULT CheckSessionInitialize(DebugClient* Client);
  2001. HRESULT LiveKernelInitialize(DebugClient* Client, ULONG Qual, PCSTR Options,
  2002. TargetInfo** TargetRet);
  2003. HRESULT UserInitialize(DebugClient* Client, ULONG64 Server,
  2004. TargetInfo** TargetRet, PBOOL CreatedTargetRet);
  2005. HRESULT DumpInitialize(DebugClient* Client,
  2006. PCWSTR FileName, ULONG64 FileHandle,
  2007. TargetInfo** TargetRet);
  2008. void DiscardSession(ULONG Reason);
  2009. void DiscardedTargets(ULONG Reason);
  2010. void DiscardTargets(ULONG Reason);
  2011. void GetClientIdentity(PSTR Identity);
  2012. void CheckForStaleBinary(PCSTR DllName, BOOL Thorough);
  2013. #endif // #ifndef __DBGCLT_HPP__