2025-04-23 00:09:35 -04:00

1548 lines
53 KiB
Plaintext

// XKDebug.idl : IDL source for XKDebug
//
// This file will be processed by the MIDL tool to
// produce the type library (XKDebug.tlb) and marshalling code.
import "oaidl.idl";
import "ocidl.idl";
interface IXboxManager;
interface IXboxExecutableDatabase;
interface IXboxConsole;
interface IXboxConsoles;
interface IXboxUser;
interface IXboxUsers;
interface IXboxFile;
interface IXboxFiles;
interface IXboxDebugTarget;
interface IXboxModule;
interface IXboxModules;
interface IXboxSection;
interface IXboxSections;
interface IXboxThread;
interface IXboxThreads;
interface IXboxMemoryRegions;
interface IXboxMemoryRegion;
interface IXboxStackFrame;
interface IXboxEvents;
interface IXboxExecutable;
interface IXboxAutomation;
//
// Macros for generating HRESULTS. These should match those in xbdm.h
//
cpp_quote("#define FACILITY_XDEVKIT 0x2da")
cpp_quote("#ifndef MAKE_HRESULT")
cpp_quote("#define MAKE_HRESULT(sev,fac,code) ((HRESULT)(((unsigned long)sev<<31)|((unsigned long)fac<<16)|((unsigned long)code)))")
cpp_quote("#endif")
cpp_quote("#define MAKE_E_XDEVKIT(code) MAKE_HRESULT(1, FACILITY_XDEVKIT, code)")
cpp_quote("#define MAKE_S_XDEVKIT(code) MAKE_HRESULT(0, FACILITY_XDEVKIT, code)")
//
// Success codes
//
cpp_quote("#define S_XDEVKIT_NOERR MAKE_S_XDEVKIT(0)")
cpp_quote("#define S_XDEVKIT_CONNECTED MAKE_S_XDEVKIT(1)")
cpp_quote("#define S_XDEVKIT_MULTIRESPONSE MAKE_S_XDEVKIT(2)")
cpp_quote("#define S_XDEVKIT_BINRESPONSE MAKE_S_XDEVKIT(3)")
cpp_quote("#define S_XDEVKIT_READYFORBIN MAKE_S_XDEVKIT(4)")
cpp_quote("#define S_XDEVKIT_DEDICATED MAKE_S_XDEVKIT(5)")
cpp_quote("#define S_XDEVKIT_PROFILERESTARTED MAKE_S_XDEVKIT(6)")
cpp_quote("#define S_XDEVKIT_FASTCAPENABLED MAKE_S_XDEVKIT(7)")
cpp_quote("#define S_XDEVKIT_CALLCAPENABLED MAKE_S_XDEVKIT(8)")
//
// Errors (non-wire)
//
cpp_quote("#define E_XDEVKIT_UNDEFINED MAKE_E_XDEVKIT(0)")
cpp_quote("#define E_XDEVKIT_MAXCONNECT MAKE_E_XDEVKIT(1)")
cpp_quote("#define E_XDEVKIT_NOSUCHFILE MAKE_E_XDEVKIT(2)")
cpp_quote("#define E_XDEVKIT_NOMODULE MAKE_E_XDEVKIT(3)")
cpp_quote("#define E_XDEVKIT_MEMUNMAPPED MAKE_E_XDEVKIT(4)")
cpp_quote("#define E_XDEVKIT_NOTHREAD MAKE_E_XDEVKIT(5)")
cpp_quote("#define E_XDEVKIT_CLOCKNOTSET MAKE_E_XDEVKIT(6)")
cpp_quote("#define E_XDEVKIT_INVALIDCMD MAKE_E_XDEVKIT(7)")
cpp_quote("#define E_XDEVKIT_NOTSTOPPED MAKE_E_XDEVKIT(8)")
cpp_quote("#define E_XDEVKIT_MUSTCOPY MAKE_E_XDEVKIT(9)")
cpp_quote("#define E_XDEVKIT_ALREADYEXISTS MAKE_E_XDEVKIT(10)")
cpp_quote("#define E_XDEVKIT_DIRNOTEMPTY MAKE_E_XDEVKIT(11)")
cpp_quote("#define E_XDEVKIT_BADFILENAME MAKE_E_XDEVKIT(12)")
cpp_quote("#define E_XDEVKIT_CANNOTCREATE MAKE_E_XDEVKIT(13)")
cpp_quote("#define E_XDEVKIT_CANNOTACCESS MAKE_E_XDEVKIT(14)")
cpp_quote("#define E_XDEVKIT_DEVICEFULL MAKE_E_XDEVKIT(15)")
cpp_quote("#define E_XDEVKIT_NOTDEBUGGABLE MAKE_E_XDEVKIT(16)")
cpp_quote("#define E_XDEVKIT_BADCOUNTTYPE MAKE_E_XDEVKIT(17)")
cpp_quote("#define E_XDEVKIT_COUNTUNAVAILABLE MAKE_E_XDEVKIT(18)")
cpp_quote("#define E_XDEVKIT_NOTLOCKED MAKE_E_XDEVKIT(20)")
cpp_quote("#define E_XDEVKIT_KEYXCHG MAKE_E_XDEVKIT(21)")
cpp_quote("#define E_XDEVKIT_MUSTBEDEDICATED MAKE_E_XDEVKIT(22)")
cpp_quote("#define E_XDEVKIT_INVALIDARG MAKE_E_XDEVKIT(23)")
cpp_quote("#define E_XDEVKIT_PROFILENOTSTARTED MAKE_E_XDEVKIT(24)")
cpp_quote("#define E_XDEVKIT_PROFILEALREADYSTARTED MAKE_E_XDEVKIT(25)")
cpp_quote("#define E_XDEVKIT_ALREADYSTOPPED MAKE_E_XDEVKIT(26)")
cpp_quote("#define E_XDEVKIT_FASTCAPNOTENABLED MAKE_E_XDEVKIT(27)")
cpp_quote("#define E_XDEVKIT_NOMEMORY MAKE_E_XDEVKIT(28)")
cpp_quote("#define E_XDEVKIT_TIMEOUT MAKE_E_XDEVKIT(29)")
cpp_quote("#define E_XDEVKIT_NOSUCHPATH MAKE_E_XDEVKIT(30)")
cpp_quote("#define E_XDEVKIT_INVALID_SCREEN_INPUT_FORMAT MAKE_E_XDEVKIT(31)")
cpp_quote("#define E_XDEVKIT_INVALID_SCREEN_OUTPUT_FORMAT MAKE_E_XDEVKIT(32)")
cpp_quote("#define E_XDEVKIT_CALLCAPNOTENABLED MAKE_E_XDEVKIT(33)")
cpp_quote("#define E_XDEVKIT_INVALIDCAPCFG MAKE_E_XDEVKIT(34)")
cpp_quote("#define E_XDEVKIT_CAPNOTENABLED MAKE_E_XDEVKIT(35)")
cpp_quote("#define E_XDEVKIT_TOOBIGJUMP MAKE_E_XDEVKIT(36)")
cpp_quote("#define E_XDEVKIT_OUTPUTBUFFERTOOSMALL MAKE_E_XDEVKIT(38)")
cpp_quote("#define E_XDEVKIT_PROFILEREBOOT MAKE_E_XDEVKIT(39)")
cpp_quote("#define E_XDEVKIT_MAXDURATIONEXCEEDED MAKE_E_XDEVKIT(41)")
cpp_quote("#define E_XDEVKIT_INVALIDSTATE MAKE_E_XDEVKIT(42)")
cpp_quote("#define E_XDEVKIT_MAXEXTENSIONS MAKE_E_XDEVKIT(43)")
cpp_quote("#define E_XDEVKIT_PMCSESSIONALREADYACTIVE MAKE_E_XDEVKIT(44)")
cpp_quote("#define E_XDEVKIT_PMCSESSIONNOTACTIVE MAKE_E_XDEVKIT(45)")
cpp_quote("#define E_XDEVKIT_LINE_TOO_LONG MAKE_E_XDEVKIT(46)")
cpp_quote("#define E_XDEVKIT_D3D_DEBUG_COMMAND_NOT_IMPLEMENTED MAKE_E_XDEVKIT(0x50)")
cpp_quote("#define E_XDEVKIT_D3D_INVALID_SURFACE MAKE_E_XDEVKIT(0x51)")
//
// Errors (wire)
//
cpp_quote("#define E_XDEVKIT_CANNOTCONNECT MAKE_E_XDEVKIT(0x100)")
cpp_quote("#define E_XDEVKIT_CONNECTIONLOST MAKE_E_XDEVKIT(0x101)")
cpp_quote("#define E_XDEVKIT_FILEERROR MAKE_E_XDEVKIT(0x103)")
cpp_quote("#define E_XDEVKIT_ENDOFLIST MAKE_E_XDEVKIT(0x104)")
cpp_quote("#define E_XDEVKIT_BUFFER_TOO_SMALL MAKE_E_XDEVKIT(0x105)")
cpp_quote("#define E_XDEVKIT_NOTXBEFILE MAKE_E_XDEVKIT(0x106)")
cpp_quote("#define E_XDEVKIT_MEMSETINCOMPLETE MAKE_E_XDEVKIT(0x107)")
cpp_quote("#define E_XDEVKIT_NOXBOXNAME MAKE_E_XDEVKIT(0x108)")
cpp_quote("#define E_XDEVKIT_NOERRORSTRING MAKE_E_XDEVKIT(0x109)")
cpp_quote("#define E_XDEVKIT_INVALIDSTATUS MAKE_E_XDEVKIT(0x10A)")
cpp_quote("#define E_XDEVKIT_TASK_PENDING MAKE_E_XDEVKIT(0x150)")
//
// Errors (PC tools)
//
cpp_quote("#define FACILITY_XEXECDB 0x2da")
cpp_quote("#define MAKE_E_XEXECDB(code) MAKE_HRESULT(1, FACILITY_XEXECDB, code)")
cpp_quote("#define MAKE_S_XEXECDB(code) MAKE_HRESULT(0, FACILITY_XEXECDB, code)")
cpp_quote("#define E_XEXECDB_UNRECOGNIZED_FILE MAKE_E_XEXECDB(0x400)")
cpp_quote("#define E_XEXECDB_WRONG_VERSION MAKE_E_XEXECDB(0x401)")
typedef struct XBOX_PROCESS_INFO
{
DWORD ProcessId;
BSTR ProgramName;
} XBOX_PROCESS_INFO, *PXBOX_PROCESS_INFO;
cpp_quote("namespace eXboxAccessFlags {")
[v1_enum] enum XboxAccessFlags
{
Read = 1,
Write = 2,
Control = 4,
Configure = 8,
Manage = 16
};
cpp_quote("}")
cpp_quote("/*")
typedef enum XboxAccessFlags _XboxAccessFlags;
cpp_quote("*/ typedef int _XboxAccessFlags;")
typedef struct XBOX_USER {
BSTR UserName;
_XboxAccessFlags Access;
} XBOX_USER, *PXBOX_USER;
cpp_quote("namespace eXboxModuleInfoFlags {")
[v1_enum] enum XboxModuleInfoFlags
{
Main = 1,
Tls = 2,
Dll = 4
};
cpp_quote("}")
cpp_quote("/*")
typedef enum XboxModuleInfoFlags _XboxModuleInfoFlags;
cpp_quote("*/ typedef int _XboxModuleInfoFlags;")
typedef struct XBOX_MODULE_INFO
{
BSTR Name;
BSTR FullName;
DWORD BaseAddress;
DWORD Size;
DWORD TimeStamp;
DWORD CheckSum;
_XboxModuleInfoFlags Flags;
} XBOX_MODULE_INFO, *PXBOX_MODULE_INFO;
cpp_quote("namespace eXboxSectionInfoFlags {")
[v1_enum] enum XboxSectionInfoFlags
{
Loaded = 1,
Readable = 2,
Writeable = 4,
Executable = 8,
Uninitialized = 16
};
cpp_quote("}")
cpp_quote("/*")
typedef enum XboxSectionInfoFlags _XboxSectionInfoFlags;
cpp_quote("*/ typedef int _XboxSectionInfoFlags;")
typedef struct XBOX_SECTION_INFO
{
BSTR Name;
DWORD BaseAddress;
DWORD Size;
DWORD Index;
_XboxSectionInfoFlags Flags;
} XBOX_SECTION_INFO, *PXBOX_SECTION_INFO;
typedef struct XBOX_THREAD_INFO
{
DWORD ThreadId;
DWORD SuspendCount;
DWORD Priority;
DWORD TlsBase;
DWORD StartAddress;
DWORD StackBase;
DWORD StackLimit;
DWORD StackSlackSpace;
VARIANT CreateTime;
BSTR Name;
} XBOX_THREAD_INFO, *PXBOX_THREAD_INFO;
cpp_quote("namespace eXboxFunctionType {")
[v1_enum] enum XboxFunctionType
{
NoPData = 0xFFFFFFFF,
SaveMillicode = 0,
NoHandler = 1,
RestoreMillicode = 2,
Handler = 3
};
cpp_quote("}")
cpp_quote("/*")
typedef enum XboxFunctionType _XboxFunctionType;
cpp_quote("*/ typedef eXboxFunctionType::XboxFunctionType _XboxFunctionType;")
typedef struct XBOX_FUNCTION_INFO
{
_XboxFunctionType FunctionType;
DWORD BeginAddress;
DWORD PrologEndAddress;
DWORD FunctionEndAddress;
} XBOX_FUNCTION_INFO, *PXBOX_FUNCTION_INFO;
cpp_quote("namespace eXboxDebugEventType {")
[v1_enum] enum XboxDebugEventType
{
NoEvent,
ExecutionBreak,
DebugString,
ExecStateChange,
SingleStep,
ModuleLoad,
ModuleUnload,
ThreadCreate,
ThreadDestroy,
Exception,
AssertionFailed,
AssertionFailedEx,
DataBreak,
RIP,
SectionLoad,
SectionUnload,
StackTrace,
FiberCreate,
FiberDestroy,
BugCheck,
PgoModuleStartup
};
cpp_quote("}")
cpp_quote("/*")
typedef enum XboxDebugEventType _XboxDebugEventType;
cpp_quote("*/ typedef eXboxDebugEventType::XboxDebugEventType _XboxDebugEventType;")
cpp_quote("namespace eXboxExecutionState {")
[v1_enum] enum XboxExecutionState
{
Stopped,
Running,
Rebooting,
Pending,
RebootingTitle,
PendingTitle
};
cpp_quote("}")
cpp_quote("/*")
typedef enum XboxExecutionState _XboxExecutionState;
cpp_quote("*/ typedef eXboxExecutionState::XboxExecutionState _XboxExecutionState;")
cpp_quote("// Must match DMSTOP_ constants")
cpp_quote("namespace eXboxStopOnFlags {")
[v1_enum] enum XboxStopOnFlags
{
OnThreadCreate = 0x01,
OnFirstChanceException = 0x02,
OnDebugString = 0x04,
OnStackTrace = 0x08,
OnModuleLoad = 0x10,
OnTitleLaunch = 0x20,
OnPgoModuleStartup = 0x40
};
cpp_quote("}")
cpp_quote("/*")
typedef enum XboxStopOnFlags _XboxStopOnFlags;
cpp_quote("*/ typedef int _XboxStopOnFlags;")
cpp_quote("namespace eXboxRebootFlags {")
[v1_enum] enum XboxRebootFlags
{
Title = 0,
Wait = 1,
Cold = 2,
[helpstring("Deprecated, use Cold")] Warm = 4,
Stop = 8
};
cpp_quote("#pragma deprecated(Warm)")
cpp_quote("}")
cpp_quote("/*")
typedef enum XboxRebootFlags _XboxRebootFlags;
cpp_quote("*/ typedef int _XboxRebootFlags;")
cpp_quote("namespace eXboxExceptionFlags {")
[v1_enum] enum XboxExceptionFlags
{
Noncontinuable = 1,
FirstChance = 2
};
cpp_quote("}")
cpp_quote("/*")
typedef enum XboxExceptionFlags _XboxExceptionFlags;
cpp_quote("*/ typedef int _XboxExceptionFlags;")
typedef struct XBOX_EVENT_INFO
{
_XboxDebugEventType Event;
VARIANT_BOOL IsThreadStopped;
IXboxThread *Thread;
IXboxModule *Module;
IXboxSection *Section;
_XboxExecutionState ExecState;
BSTR Message;
DWORD Code;
DWORD Address;
_XboxExceptionFlags Flags;
DWORD ParameterCount;
DWORD Parameters[15];
} XBOX_EVENT_INFO, *PXBOX_EVENT_INFO;
cpp_quote("namespace eXboxBreakpointType {")
[v1_enum] enum XboxBreakpointType
{
NoBreakpoint = 0,
OnWrite,
OnRead,
OnExecuteHW,
OnExecute
};
cpp_quote("}")
cpp_quote("/*")
typedef enum XboxBreakpointType _XboxBreakpointType;
cpp_quote("*/ typedef eXboxBreakpointType::XboxBreakpointType _XboxBreakpointType;")
cpp_quote("namespace eXboxSelectConsoleFlags {")
[v1_enum] enum XboxSelectConsoleFlags
{
NoPromptIfDefaultExists,
NoPromptIfOnlyOne,
FilterByAccess
};
cpp_quote("}")
cpp_quote("/*")
typedef enum XboxSelectConsoleFlags _XboxSelectConsoleFlags;
cpp_quote("*/ typedef int _XboxSelectConsoleFlags;")
cpp_quote("namespace eXboxDebugConnectFlags{")
[v1_enum] enum XboxDebugConnectFlags
{
Force = 0x0001,
MonitorOnly = 0x0002
};
cpp_quote("}")
cpp_quote("/*")
typedef enum XboxDebugConnectFlags _XboxDebugConnectFlags;
cpp_quote("*/ typedef int _XboxDebugConnectFlags;")
cpp_quote("namespace eXboxDumpFlags{")
[v1_enum] enum XboxDumpFlags
{
Normal = 0x0000,
WithDataSegs = 0x0001,
WithFullMemory = 0x0002,
WithHandleData = 0x0004,
FilterMemory = 0x0008,
ScanMemory = 0x0010,
WithUnloadedModules = 0x0020,
WithIndirectlyReferencedMemory = 0x0040,
FilterModulePaths = 0x0080,
WithProcessThreadData = 0x0100,
WithPrivateReadWriteMemory = 0x0200,
};
cpp_quote("}")
cpp_quote("/*")
typedef enum XboxDumpFlags _XboxDumpFlags;
cpp_quote("*/ typedef int _XboxDumpFlags;")
cpp_quote("namespace eXboxDumpMode{")
[v1_enum] enum XboxDumpMode
{
Smart = 0x0000,
Enabled = 0x0001,
Disabled = 0x0002
};
cpp_quote("}")
cpp_quote("/*")
typedef enum XboxDumpMode _XboxDumpMode;
cpp_quote("*/ typedef eXboxDumpMode::XboxDumpMode _XboxDumpMode;")
cpp_quote("namespace eXboxEventDeferFlags {")
[v1_enum] enum XboxEventDeferFlags
{
CanDeferExecutionBreak =0x0001,
CanDeferDebugString =0x0002,
CanDeferSingleStep =0x0004,
CanDeferAssertionFailed =0x0008,
CanDeferAssertionFailedEx =0x0010,
CanDeferDataBreak =0x0020,
CanDeferRIP =0x0040
};
cpp_quote("}")
cpp_quote("/*")
typedef enum XboxEventDeferFlags _XboxEventDeferFlags;
cpp_quote("*/ typedef int _XboxEventDeferFlags;")
cpp_quote("namespace eXboxDumpReportFlags {")
[v1_enum] enum XboxDumpReportFlags
{
PromptToReport = 0,
AlwaysReport = 0x0001,
NeverReport = 0x0002,
ReportGroup = 0x000F,
LocalDestination = 0x0000,
RemoteDestination = 0x0010,
DestinationGroup = 0x000F,
FormatFullHeap = 0x0000,
FormatPartialHeap = 0x0100,
FormatNoHeap = 0x0200,
FormatRetail = 0x0400,
FormatGroup = 0x0F00
};
cpp_quote("}")
cpp_quote("/*")
typedef enum XboxDumpReportFlags _XboxDumpReportFlags;
cpp_quote("*/ typedef int _XboxDumpReportFlags;")
cpp_quote("namespace eXboxConsoleType {")
[v1_enum] enum XboxConsoleType
{
DevelopmentKit = 0,
TestKit = 1,
ReviewerKit = 2
};
cpp_quote("}")
cpp_quote("/*")
typedef enum XboxConsoleType _XboxConsoleType;
cpp_quote("*/ typedef eXboxConsoleType::XboxConsoleType _XboxConsoleType;")
cpp_quote("namespace eXboxConsoleFeatures {")
[v1_enum] enum XboxConsoleFeatures
{
Debugging = 1, //DMCF_DEBUGGING
SecondaryNIC = 2, //DMCF_SECONDARY_NIC
GB_RAM = 4 //DMCF_1GB_RAM
};
cpp_quote("}")
cpp_quote("/*")
typedef enum XboxConsoleFeatures _XboxConsoleFeatures;
cpp_quote("*/ typedef int _XboxConsoleFeatures;")
typedef struct XBOX_DUMP_SETTINGS
{
_XboxDumpReportFlags Flags;
BSTR NetworkPath;
} XBOX_DUMP_SETTINGS, *PXBOX_DUMP_SETTINGS;
[
object,
uuid(c4c077e9-bf83-4657-ad8b-1e5abb9bb9a8),
dual,
oleautomation,
nonextensible,
helpstring("Add, remove, enumerate, open Xbox consoles and dump files")
]
interface IXboxManager: IDispatch
{
[propget, id(1)]HRESULT DefaultConsole( [out, retval] BSTR *DefaultXbox);
[propput, id(1)]HRESULT DefaultConsole( [in] BSTR DefaultXbox);
[propget, id(2)]HRESULT Consoles( [out, retval] IXboxConsoles **Consoles);
[id(3)]HRESULT AddConsole( [in] BSTR Xbox);
[id(4)]HRESULT RemoveConsole( [in] BSTR Xbox);
[id(6)]HRESULT OpenConsole( [in] BSTR XboxName, [out, retval] IXboxConsole **Console);
[id(7)]HRESULT OpenDumpFile( [in] BSTR FileName, [in] BSTR ImageSearchPath, [out, retval] IXboxDebugTarget **DebugTarget);
[id(8)] HRESULT SelectConsole( [in] LONG ParentWindow, [out] BSTR *SelectedXbox, [in] _XboxAccessFlags DesiredAccess, [in] _XboxSelectConsoleFlags Flags);
[id(9)] HRESULT RunAddConsoleWizard( [in] LONG ParentWindow, [in] VARIANT_BOOL Modal);
[id(10)] HRESULT OpenWindowsExplorer( [in] BSTR XboxName, [in] BSTR Path);
[id(20)] HRESULT TranslateError( [in] HRESULT hr, [out, retval] BSTR *ErrorString);
[propget,id(21)] HRESULT SystemSymbolServerPath([out, retval] BSTR *SymbolServerPath);
[id(22)] HRESULT SelectConsoleEx( [in] LONGLONG ParentWindow, [out] BSTR *SelectedXbox, [in] _XboxAccessFlags DesiredAccess, [in] _XboxSelectConsoleFlags Flags);
[id(23)] HRESULT RunAddConsoleWizardEx( [in] LONGLONG ParentWindow, [in] VARIANT_BOOL Modal);
};
cpp_quote("namespace eXboxShareMode {")
[v1_enum] enum XboxShareMode
{
ShareNone = 0,
ShareRead = 0x0001, // Same as WIN32 SHARE_READ
ShareWrite = 0x0002, // Same as WIN32 SHARE_WRITE
ShareDelete = 0x0004 // Same as WIN32 SHARE_DELETE
};
cpp_quote("}")
cpp_quote("/*")
typedef enum XboxShareMode _XboxShareMode;
cpp_quote("*/ typedef int _XboxShareMode;")
cpp_quote("namespace eXboxCreateDisposition {")
[v1_enum] enum XboxCreateDisposition
{
CreateNew = 1, // Same as WIN32 CREATE_NEW
CreateAlways = 2, // Same as WIN32 CREATE_ALWAYS
OpenExisting = 3, // Same as WIN32 OPEN_EXISTING
OpenAlways = 4 // Same as WIN32 OPEN_ALWAYS
};
cpp_quote("}")
cpp_quote("/*")
typedef enum XboxCreateDisposition _XboxCreateDisposition;
cpp_quote("*/ typedef eXboxCreateDisposition::XboxCreateDisposition _XboxCreateDisposition;")
[
object,
uuid(978B90D1-1F44-4adc-B992-12AF5DBE16E2),
dual,
oleautomation,
nonextensible,
helpstring("Information about an executable in an executable database.")
]
interface IXboxExecutableInfo : IDispatch
{
// Persisted properties
[propget, id(1)] HRESULT SymbolGuid([out,retval] BSTR *Guid);
[propget, id(2)] HRESULT XboxExecutablePath([out,retval] BSTR *Path);
[propget, id(3)] HRESULT PortableExecutablePath([out,retval] BSTR *Path);
[propget, id(4)] HRESULT SymbolPath([out,retval] BSTR *Path);
[propget, id(5)] HRESULT PublicSymbolPath([out,retval] BSTR *Path);
[propget, id(6)] HRESULT ModuleName([out,retval] BSTR *Name);
[propget, id(7)] HRESULT TimeDateStamp([out,retval] DWORD *Time);
[propget, id(8)] HRESULT SizeOfImage([out,retval] DWORD *Size);
[propget, id(9)] HRESULT StoreRelativePath([out,retval] VARIANT_BOOL *RelativePath);
// Runtime Properties
[propget, id(10)] HRESULT BasePath([out,retval] BSTR *Path);
[propput, id(10)] HRESULT BasePath([in] BSTR Path);
[propget, id(11)] HRESULT PropGetRelativePath([out,retval] VARIANT_BOOL *Relative);
[propput, id(11)] HRESULT PropGetRelativePath([in] VARIANT_BOOL Relative);
};
[
object,
uuid(CB8E47BA-2673-48af-B0C5-FD5738FFCC6B),
dual,
oleautomation,
nonextensible,
helpstring("Search, edit executable database file.")
]
interface IXboxExecutableDatabase : IDispatch
{
[propget, id(1)] HRESULT IsDirty([out,retval] VARIANT_BOOL *DirtyFlag);
[propget, id(2)] HRESULT CurrentFileName([out,retval] BSTR *Path);
[id(100)] HRESULT LoadDatabase(
[in] BSTR DatabaseFile,
[in] VARIANT_BOOL ReadOnly,
[in] _XboxCreateDisposition CreateDisposition,
[in] _XboxShareMode ShareMode
);
[id(101)] HRESULT SaveDatabase(
[in] BSTR DatabaseFile,
[in] VARIANT_BOOL Remember
);
[id(102)] HRESULT CloseDatabase();
[id(103)] HRESULT ResetDatabase();
[id(120)] HRESULT AddExecutable(
[in] BSTR XboxExecutablePath,
[in] BSTR PortableExecutablePath,
[in] BSTR SymbolPath,
[in] BSTR PublicSymbolPath,
[in] VARIANT_BOOL ExplictFilesOnly,
[in] VARIANT_BOOL StoreRelativePath
);
[id(121)] HRESULT RemoveExecutable([in] BSTR Guid);
[id(122)] HRESULT FindExecutableByGuid(
[in] BSTR Guid,
[out] IXboxExecutableInfo **Info,
[out,retval] VARIANT_BOOL *Found
);
[id(123)] HRESULT FindExecutableForSymServ(
[in] BSTR ModuleName,
[in] DWORD TimeDateStamp,
[in] DWORD SizeOfImage,
[out] IXboxExecutableInfo **Info,
[out,retval] VARIANT_BOOL *Found
);
};
[
object,
uuid(75dd80a9-5a33-42d4-8a39-ab07c9b17cc3),
dual,
oleautomation,
nonextensible,
helpstring("Xbox Console")
]
interface IXboxConsole: IDispatch
{
//
// Console Properties
//
[propget, id(DISPID_VALUE)] HRESULT Name( [out,retval] BSTR *XboxName);
[propput, id(DISPID_VALUE)] HRESULT Name( [in] BSTR XboxName);
[propget, id(1)] HRESULT IPAddress( [out,retval] DWORD *IPAddress);
[propget, id(2)] HRESULT IPAddressTitle( [out,retval] DWORD *IPAddress);
[propget, id(3)] HRESULT SystemTime( [out,retval] VARIANT *Date);
[propput, id(3)] HRESULT SystemTime( [in] VARIANT Date);
//
// Connection Properties
//
[propget, id(20)] HRESULT Shared( [out,retval] VARIANT_BOOL *Shared);
[propput, id(20)] HRESULT Shared( [in] VARIANT_BOOL Shared);
[propget, id(21)] HRESULT ConnectTimeout( [out,retval] DWORD *Timeout);
[propput, id(21)] HRESULT ConnectTimeout( [in] DWORD Timeout);
[propget, id(22)] HRESULT ConversationTimeout( [out,retval] DWORD *Timeout);
[propput, id(22)] HRESULT ConversationTimeout( [in] DWORD Timeout);
[id(30)] HRESULT FindConsole( [in] DWORD Retries, [in] DWORD RetryDelay);
//
// Get other interfaces.
//
[propget, id(50)] HRESULT XboxManager([out, retval] IXboxManager **XboxManager);
[propget, id(51)] HRESULT DebugTarget([out, retval] IXboxDebugTarget **DebugTarget);
//
// Manipulate running process
//
[id(100)] HRESULT Reboot([in] BSTR Name, [in] BSTR MediaDirectory, [in] BSTR CmdLine, [in] _XboxRebootFlags Flags);
[id(101)] HRESULT SetDefaultTitle([in] BSTR TitleName, [in] BSTR MediaDirectory, [in] DWORD Flags);
[propget, id(102)] HRESULT RunningProcessInfo( [out, retval] PXBOX_PROCESS_INFO ProcessInfo);
//
// Support for Custom Command Handlers
//
[id(110)] HRESULT OpenConnection( [in] BSTR Handler, [out,retval] DWORD *Connection);
[id(111)] HRESULT CloseConnection([in] DWORD Connection);
[id(112)] HRESULT SendTextCommand([in] DWORD Connection, [in] BSTR Command, [out] BSTR *Response);
// For binary data in commands
[id(113)] HRESULT ReceiveSocketLine([in] DWORD Connection, [out] BSTR *Line);
[id(114)] HRESULT ReceiveStatusResponse([in] DWORD Connection, [out] BSTR *Line, [out,retval] HRESULT* status);
[id(115)] HRESULT SendBinary([in] DWORD Connection, [in] SAFEARRAY(BYTE) Data, [in] DWORD Count);
[id(116)] HRESULT ReceiveBinary([in] DWORD Connection, [in,out] SAFEARRAY(BYTE) Data, [in] DWORD Count, [out] DWORD *BytesReceived);
[id(117),hidden] HRESULT SendBinary_cpp([in] DWORD Connection, [in, size_is(Count)] BYTE *Data, [in] DWORD Count);
[id(118),hidden] HRESULT ReceiveBinary_cpp([in] DWORD Connection, [in, size_is(Count)] BYTE *Data, [in] DWORD Count, [out] DWORD *BytesReceived);
//
// Drive information
//
[propget, id(120)] HRESULT Drives( [out, retval] BSTR *Drives);
[id(121)] HRESULT GetDiskFreeSpace(
[in] WCHAR Drive,
[out] ULONGLONG *FreeBytesAvailableToCaller,
[out] ULONGLONG *TotalNumberOfBytes,
[out] ULONGLONG *TotalNumberOfFreeBytes
);
//
// Directory Access
//
[id(125)] HRESULT MakeDirectory( [in] BSTR Directory);
[id(126)] HRESULT RemoveDirectory( [in] BSTR Directory);
[id(127)] HRESULT DirectoryFiles( [in] BSTR Directory, [out,retval] IXboxFiles **Files);
//
// File data access
//
[id(130)] HRESULT SendFile( [in] BSTR LocalName, [in] BSTR RemoteName);
[id(131)] HRESULT ReceiveFile( [in] BSTR LocalName, [in] BSTR RemoteName);
[id(132)] HRESULT ReadFileBytes(
[in] BSTR FileName,
[in] DWORD FileOffset,
[in] DWORD Count,
[in, out] SAFEARRAY(BYTE) Data,
[out] DWORD *BytesRead
);
[id(133)] HRESULT WriteFileBytes(
[in] BSTR FileName,
[in] DWORD FileOffset,
[in] DWORD Count,
[in] SAFEARRAY(BYTE) Data,
[out] DWORD *BytesWritten
);
[id(134),hidden] HRESULT ReadFileBytes_cpp(
[in] BSTR FileName,
[in] DWORD FileOffset,
[in] DWORD Count,
[out, size_is(Count), length_is(*BytesRead)] BYTE *Data,
[out] DWORD *BytesRead
);
[id(135),hidden] HRESULT WriteFileBytes_cpp(
[in] BSTR FileName,
[in] DWORD FileOffset,
[in] DWORD Count,
[in, size_is(Count)] BYTE *Data,
[out] DWORD *BytesWritten
);
[id(136)] HRESULT SetFileSize(
[in] BSTR FileName,
[in] DWORD FileOffset,
[in] _XboxCreateDisposition CreateDisposition
);
//
// File Attributes
//
[id(140)] HRESULT GetFileObject([in] BSTR FileName, [out, retval] IXboxFile **FileObject);
[id(141)] HRESULT RenameFile( [in] BSTR OldName, [in] BSTR NewName);
[id(142)] HRESULT DeleteFile( [in] BSTR FileName);
//
// D3D Info
//
[id(150)] HRESULT ScreenShot(BSTR FileName);
//
// Debug Settings
//
[propget, id(160)] HRESULT DumpMode( [out, retval] _XboxDumpMode* DumpMode);
[propput, id(160)] HRESULT DumpMode( [in] _XboxDumpMode DumpMode);
[id(161)] HRESULT GetDumpSettings( [out] PXBOX_DUMP_SETTINGS DumpMode);
[id(162)] HRESULT SetDumpSettings( [in] PXBOX_DUMP_SETTINGS DumpMode);
[propget, id(163)] HRESULT EventDeferFlags( [out,retval] _XboxEventDeferFlags *EventDeferFlags);
[propput, id(163)] HRESULT EventDeferFlags( [in] _XboxEventDeferFlags EventDeferFlags);
//
// Console type
//
[propget, id(170)] HRESULT ConsoleType( [out,retval] _XboxConsoleType *ConsoleType);
// NYI
// HRESULT GetSurface(TBD);
// HRESULT GetGammaTable(TBD);
// HRESULT GetPalette(TBD);
// HRESULT GetD3DState(TBD);
//
// Security Methods
//
// [id(160)] HRESULT RunSecurityDialog( [in] LONG ParentWindow );
// [propget, id(161)] HRESULT SecurityEnabled( [out, retval] VARIANT_BOOL *Enabled);
// [propput, id(162)] HRESULT SecurityEnabled( [in] VARIANT_BOOL Enabled);
// [id(163)] HRESULT StartAdminMode( [in] BSTR Password );
// [id(164)] HRESULT StopAdminMode();
// [propput, id(159)] HRESULT AdminPassword( [in] BSTR Password);
// [id(165)] HRESULT SetUserAccess( [in] BSTR UserName, [in] _XboxAccessFlags Access);
// [id(166)] HRESULT GetUserAccess( [in] BSTR UserName, [in] _XboxAccessFlags *Access);
// [id(167)] HRESULT AddUser( [in] BSTR UserName, [in] _XboxAccessFlags Access);
// [id(168)] HRESULT RemoveUser( [in] BSTR UserName);
// [propget, id(169)] HRESULT Users( [out, retval] IXboxUsers **Users);
//
// Configuration Values [REVIEW] do we want some enums defined, or rather specific methods.
//
// [id(180)] HRESULT GetConfigurationValue(
// [in] DWORD Index,
// [in] DWORD Type,
// [out, size_is(ValueLength),length_is(ValueLength)] BYTE *Value,
// [in] DWORD ValueLength
// );
// [id(181)] HRESULT SetConfigurationValue(
// [in] DWORD Index,
// [in] DWORD Type,
// [in, size_is(ValueLength)] BYTE *Value,
// [in] DWORD ValueLength
// );
//
// File-event Methods
//
[id(182)] HRESULT StartFileEventCapture();
[id(183)] HRESULT StopFileEventCapture();
//
// Get IXboxAutomation interface
//
[propget, id(184)] HRESULT XboxAutomation([out, retval] IXboxAutomation **Automation);
//
// Debugger Extensions
//
[id(185)] HRESULT LoadDebuggerExtension( [in] BSTR ExtensionName, [out,retval] DWORD* ModuleHandle);
[id(186)] HRESULT UnloadDebuggerExtension( [in] DWORD ModuleHandle);
//
// Console Extensions
//
[propget, id(190)] HRESULT ConsoleFeatures ( [out,retval] _XboxConsoleFeatures *ConsoleFeatures);
};
[
object,
uuid(110980e4-f8d4-45f1-8a86-90d86fd4a879),
dual,
oleautomation,
nonextensible,
pointer_default(unique),
helpstring("Console in Xenon Neighborhood")
]
interface IXboxConsoles : IDispatch
{
[id(DISPID_VALUE), propget] HRESULT Item( [in] LONG Index, [out, retval] BSTR *ConsoleName);
[id(1), propget] HRESULT Count([out, retval]LONG *Count);
[id(DISPID_NEWENUM), propget] HRESULT _NewEnum( [out, retval] IEnumVARIANT **Enumerator);
};
[
object,
uuid(b9dbc76d-8a06-4eeb-84bd-1ad42f0afe28),
dual,
oleautomation,
nonextensible,
pointer_default(unique),
helpstring("File")
]
interface IXboxFile : IDispatch
{
[propget, id(DISPID_VALUE)] HRESULT Name([out, retval]BSTR *Name);
[propput, id(DISPID_VALUE)] HRESULT Name([in] BSTR Name);
[propget, id(1)] HRESULT CreationTime([out, retval]VARIANT *CreationTime);
[propput, id(1)] HRESULT CreationTime([in]VARIANT CreationTime);
[propget, id(2)] HRESULT ChangeTime([out, retval]VARIANT *ChangeTime);
[propput, id(2)] HRESULT ChangeTime([in]VARIANT ChangeTime);
[propget, id(3)] HRESULT Size([out, retval]ULONGLONG *Size);
[propput, id(3)] HRESULT Size([in]ULONGLONG Size);
[propget, id(4)] HRESULT IsReadOnly([out, retval]VARIANT_BOOL *ReadOnly);
[propput, id(4)] HRESULT IsReadOnly([in]VARIANT_BOOL ReadOnly);
[propget, id(5)] HRESULT IsDirectory([out, retval]VARIANT_BOOL *Directory);
};
[
object,
uuid(dfcf3f84-5394-448d-bcac-e30af6c840e1),
dual,
oleautomation,
nonextensible,
pointer_default(unique),
helpstring("Files in a Directory")
]
interface IXboxFiles : IDispatch
{
[id(DISPID_VALUE), propget] HRESULT Item( [in] LONG Index, [out, retval] IXboxFile **File);
[id(1), propget] HRESULT Count([out, retval]LONG *Count);
[id(DISPID_NEWENUM), propget] HRESULT _NewEnum( [out, retval] IEnumVARIANT **Enumerator);
};
[
object,
uuid(6bb90673-5c3c-4b63-8d3c-479a5ede82c3),
dual,
oleautomation,
nonextensible,
pointer_default(unique),
helpstring("Information about User's Access")
]
interface IXboxUser : IDispatch
{
[propget, id(DISPID_VALUE)] HRESULT Name([out, retval]BSTR *UserName);
[propput, id(DISPID_VALUE)] HRESULT Name([in]BSTR UserName);
[propget, id(1)] HRESULT HasReadAccess( [out, retval] VARIANT_BOOL *ReadAccess);
[propput, id(1)] HRESULT HasReadAccess( [in] VARIANT_BOOL ReadAccess);
[propget, id(2)] HRESULT HasWriteAccess( [out, retval] VARIANT_BOOL *WriteAccess);
[propput, id(2)] HRESULT HasWriteAccess( [in] VARIANT_BOOL WriteAccess);
[propget, id(3)] HRESULT HasControlAccess( [out, retval] VARIANT_BOOL *ControlAccess);
[propput, id(3)] HRESULT HasControlAccess( [in] VARIANT_BOOL ControlAccess);
[propget, id(4)] HRESULT HasConfigureAccess( [out, retval] VARIANT_BOOL *ConfigureAccess);
[propput, id(4)] HRESULT HasConfigureAccess( [in] VARIANT_BOOL ConfigureAccess);
[propget, id(5)] HRESULT HasManageAccess( [out, retval] VARIANT_BOOL *ManageAccess);
[propput, id(5)] HRESULT HasManageAccess( [in] VARIANT_BOOL ManageAccess);
};
[
object,
uuid(d5ee3179-7955-41b4-a507-bd78efc462c9),
dual,
oleautomation,
nonextensible,
pointer_default(unique),
helpstring("Users with Access")
]
interface IXboxUsers : IDispatch
{
[id(DISPID_VALUE), propget] HRESULT Item( [in] LONG Index, [out, retval] IXboxUser **User);
[id(1), propget] HRESULT Count([out, retval]LONG *Count);
[id(DISPID_NEWENUM), propget] HRESULT _NewEnum( [out, retval] IEnumVARIANT **Enumerator);
};
[
object,
uuid(43ccafd7-4636-43aa-b468-b7f6edca6651),
dual,
oleautomation,
nonextensible,
helpstring("Information about a debug target")
]
interface IXboxDebugTarget: IDispatch
{
[propget, id(DISPID_VALUE)] HRESULT Name( [out,retval] BSTR *Name);
[propget, id(1)] HRESULT IsDump( [out,retval] VARIANT_BOOL *IsDump);
[propget, id(20)] HRESULT XboxManager([out,retval] IXboxManager **XboxManager);
[propget, id(21)] HRESULT Console([out,retval] IXboxConsole **Console);
[id(50)] HRESULT ConnectAsDebugger( [in] BSTR DebuggerName, [in] _XboxDebugConnectFlags Flags);
[id(51)] HRESULT DisconnectAsDebugger();
[id(52)] HRESULT IsDebuggerConnected([out] BSTR *DebuggerName, [out] BSTR *UserName, [out,retval]VARIANT_BOOL *Connected);
[propget, id(100)] HRESULT Modules([out,retval] IXboxModules** Modules);
[propget,id(101)] HRESULT Threads([out,retval] IXboxThreads** Threads);
[id(103)] HRESULT GetMemory(
[in] DWORD Address,
[in] DWORD BytesToRead,
[in,out] SAFEARRAY(BYTE) Data,
[out] DWORD *BytesRead
);
[id(104)] HRESULT SetMemory(
[in] DWORD Address,
[in] DWORD BytesToWrite,
[in] SAFEARRAY(BYTE) Data,
[out] DWORD *BytesWritten
);
[id(105), hidden] HRESULT GetMemory_cpp(
[in] DWORD Address,
[in] DWORD BytesToRead,
[out,size_is(BytesToRead),length_is(*BytesRead)] BYTE *Data,
[out] DWORD *BytesRead
);
[id(106), hidden] HRESULT SetMemory_cpp(
[in] DWORD Address,
[in] DWORD BytesToWrite,
[in, size_is(BytesToWrite)] BYTE *Data,
[out] DWORD *BytesWritten
);
[id(107)] HRESULT InvalidateMemoryCache( [in] VARIANT_BOOL ExecutablePages, [in]DWORD Address, [in] DWORD Size);
[propget, id(108)] HRESULT MemoryCacheEnabled( [out, retval] VARIANT_BOOL *Enabled);
[propput, id(108)] HRESULT MemoryCacheEnabled( [in] VARIANT_BOOL Enabled);
[propget, id(109)] HRESULT MemoryRegions([out, retval] IXboxMemoryRegions **MemoryRegions);
[propget, id(110)] HRESULT RunningProcessInfo( [out,retval] PXBOX_PROCESS_INFO ProcessInfo);
[id(115)] HRESULT StopOn( [in] _XboxStopOnFlags StopOn, [in] VARIANT_BOOL Stop);
[id(116)] HRESULT Stop( [out] VARIANT_BOOL* AlreadyStopped );
[id(117)] HRESULT Go( [out] VARIANT_BOOL* NotStopped );
[id(130)] HRESULT SetBreakpoint([in] DWORD Address);
[id(131)] HRESULT RemoveBreakpoint([in] DWORD Address);
[id(132)] HRESULT RemoveAllBreakpoints();
[id(133)] HRESULT SetInitialBreakpoint();
[id(134)] HRESULT SetDataBreakpoint([in] DWORD Address, [in] _XboxBreakpointType Type, [in] DWORD Size);
[id(135)] HRESULT IsBreakpoint([in] DWORD Address, [out] _XboxBreakpointType *Type);
[id(136)] HRESULT WriteDump( [in] BSTR Filename, [in] _XboxDumpFlags Type );
[id(140), hidden] HRESULT CopyEventInfo( [out] XBOX_EVENT_INFO *EventInfoDest, [in] XBOX_EVENT_INFO *EventInfoSource);
[id(150), hidden] HRESULT FreeEventInfo( [in,out] XBOX_EVENT_INFO *EventInfo);
[id(160)] HRESULT PgoStartDataCollection (DWORD PgoModule);
[id(161)] HRESULT PgoStopDataCollection (DWORD PgoModule);
[id(162)] HRESULT PgoSaveSnapshot(BSTR Phase, VARIANT_BOOL Reset, DWORD PgoModule);
[id(163)] HRESULT PgoSetAllocScale(DWORD PgoModule, DWORD BufferAllocScale);
};
cpp_quote("namespace eXboxAutomationButtonFlags {")
[v1_enum] enum XboxAutomationButtonFlags
{
DPadUp =0x0001,
DPadDown =0x0002,
DPadLeft =0x0004,
DPadRight =0x0008,
StartButton =0x0010,
BackButton =0x0020,
LeftThumbButton =0x0040,
RightThumbButton =0x0080,
LeftShoulderButton =0x0100,
RightShoulderButton =0x0200,
A_Button =0x1000,
B_Button =0x2000,
X_Button =0x4000,
Y_Button =0x8000,
Xbox360_Button =0x0400,
Bind_Button =0x0800
};
cpp_quote("}")
cpp_quote("/*")
typedef enum XboxAutomationButtonFlags _XboxAutomationButtonFlags;
cpp_quote("*/ typedef int _XboxAutomationButtonFlags;")
typedef struct XBOX_AUTOMATION_GAMEPAD
{
_XboxAutomationButtonFlags Buttons;
DWORD LeftTrigger;
DWORD RightTrigger;
long LeftThumbX;
long LeftThumbY;
long RightThumbX;
long RightThumbY;
} XBOX_AUTOMATION_GAMEPAD, *PXBOX_AUTOMATION_GAMEPAD;
[
object,
uuid(D81F3E2E-8304-4024-8997-BB1C893516B0),
dual,
oleautomation,
nonextensible,
helpstring("Interface to control automation on a console")
]
interface IXboxAutomation: IDispatch
{
[id(100)] HRESULT GetInputProcess( [in] DWORD UserIndex, [out] VARIANT_BOOL* SystemProcess);
[id(101)] HRESULT BindController( [in] DWORD UserIndex, [in] DWORD QueueLength);
[id(102)] HRESULT UnbindController([in] DWORD UserIndex);
[id(103)] HRESULT ConnectController([in] DWORD UserIndex);
[id(104)] HRESULT DisconnectController([in] DWORD UserIndex);
[id(105)] HRESULT SetGamepadState([in] DWORD UserIndex, [in] PXBOX_AUTOMATION_GAMEPAD Gamepad);
[id(106)] HRESULT QueueGamepadState_cpp(
[in] DWORD UserIndex,
[in, size_is(UserIndex)] PXBOX_AUTOMATION_GAMEPAD GamepadArray,
[in, size_is(UserIndex)] DWORD *TimedDurationArray,
[in, size_is(UserIndex)] DWORD *CountDurationArray,
[in] DWORD ItemCount,
[out] DWORD *ItemsAddedToQueue
);
[id(107)] HRESULT QueueGamepadState(
[in] DWORD UserIndex,
[in] XBOX_AUTOMATION_GAMEPAD* Gamepad,
[in] DWORD TimedDuration,
[in] DWORD CountDuration,
[out, retval] VARIANT_BOOL *AddedToQueue
);
[id(108)] HRESULT ClearGamepadQueue([in] DWORD UserIndex);
[id(109)] HRESULT QueryGamepadQueue([in] DWORD UserIndex,
[out] DWORD *QueueLength,
[out] DWORD *ItemsInQueue,
[out] DWORD *TimedDurationRemaining,
[out] DWORD *CountDurationRemaining
);
[id(110)] HRESULT GetUserDefaultProfile([out] LONGLONG* Xuid);
[id(111)] HRESULT SetUserDefaultProfile([in] LONGLONG Xuid);
};
[
object,
uuid(0eee2aa0-60f0-4c18-b4ed-e3933e659847),
dual,
oleautomation,
nonextensible,
pointer_default(unique),
helpstring("Information about a module")
]
interface IXboxModule: IDispatch
{
[propget, id(DISPID_VALUE)] HRESULT ModuleInfo([out,retval] XBOX_MODULE_INFO *ModuleInfo);
[propget, id(1)] HRESULT Sections([out,retval] IXboxSections** Sections);
[id(2)] HRESULT GetFunctionInfo( [in] DWORD Address, [out]XBOX_FUNCTION_INFO *FunctionInfo);
[propget, id(3)] HRESULT OriginalSize([out,retval] DWORD* OriginalSize);
[propget, id(4)] HRESULT Executable([out,retval] IXboxExecutable** Executable);
[id(5)] HRESULT GetEntryPointAddress([out,retval] DWORD* EntryPointAddress);
};
[
object,
uuid(e4f0c350-d2da-426e-adec-3d01f60fc842),
dual,
oleautomation,
nonextensible,
pointer_default(unique),
helpstring("Collection of Modules")
]
interface IXboxModules: IDispatch
{
[id(DISPID_VALUE),propget] HRESULT Item( [in] LONG Index, [out, retval] IXboxModule **Module);
[id(1), propget] HRESULT Count([out, retval]LONG *Count);
[id(DISPID_NEWENUM), propget] HRESULT _NewEnum( [out, retval] IEnumVARIANT **Enumerator);
};
[
object,
uuid(4B103593-DB52-4e18-913D-B3B17824BD76),
dual,
oleautomation,
nonextensible,
pointer_default(unique),
helpstring("Information about an Xbox executable")
]
interface IXboxExecutable: IDispatch
{
[id(1)]HRESULT GetPEModuleName( [out, retval] BSTR *ModuleName);
};
[
object,
uuid(d6df8112-0326-4d29-a6b8-cfb0d89c358a),
dual,
oleautomation,
pointer_default(unique),
helpstring("Information about a section")
]
interface IXboxSection: IDispatch
{
[propget, id(100)] HRESULT SectionInfo([out,retval] XBOX_SECTION_INFO *SectionInfo);
};
[
object,
uuid(9762df66-9516-4531-a507-a11034056f5e),
dual,
oleautomation,
pointer_default(unique),
helpstring("Sections in a module")
]
interface IXboxSections : IDispatch
{
[id(DISPID_VALUE), propget] HRESULT Item( [in] LONG Index, [out, retval] IXboxSection **Section);
[id(1), propget] HRESULT Count([out, retval]LONG *Count);
[id(DISPID_NEWENUM), propget] HRESULT _NewEnum( [out, retval] IEnumVARIANT **Enumerator);
};
[
object,
uuid(8f1e63f5-85ba-4b2d-ad9c-1fa6b750d57f),
dual,
oleautomation,
pointer_default(unique),
helpstring("Information about a thread")
]
interface IXboxThread: IDispatch
{
[propget, id(DISPID_VALUE)] HRESULT ThreadId([out, retval] DWORD *ThreadId);
[propget, id(100)] HRESULT ThreadInfo([out,retval] XBOX_THREAD_INFO *ThreadInfo);
[propget, id(101)] HRESULT StopEventInfo([out,retval] PXBOX_EVENT_INFO StopEventInfo);
[propget, id(102)] HRESULT TopOfStack([out,retval] IXboxStackFrame **StackFrame);
[id(103)] HRESULT Halt();
[id(104)] HRESULT Continue([in] VARIANT_BOOL Exception);
[id(105)] HRESULT Suspend();
[id(106)] HRESULT Resume();
[propget, id(107)] HRESULT CurrentProcessor([out,retval] DWORD *Processor);
[propget, id(108)] HRESULT LastError([out,retval] DWORD *LastError);
// Most likely will be added.
// [id(110)] HRESULT StepInstruction( [in] VARIANT_BOOL StepOver);
// [id(111)] HRESULT StepRange( [in] DWORD RangeStart, [in] DWORD RangeEnd, [in] VARIANT_BOOL StepOver);
// [id(112)] HRESULT StepOut();
};
[
object,
uuid(da7c0784-9a34-4a9e-a040-59ebcea92c1e),
dual,
oleautomation,
pointer_default(unique),
helpstring("Threads in Process")
]
interface IXboxThreads : IDispatch
{
[id(DISPID_VALUE), propget] HRESULT Item( [in] LONG Index, [out, retval] IXboxThread **Thread);
[id(1), propget] HRESULT Count([out, retval]LONG *Count);
[id(DISPID_NEWENUM), propget] HRESULT _NewEnum( [out, retval] IEnumVARIANT **Enumerator);
};
cpp_quote("namespace eXboxRegisters32{")
[v1_enum] enum XboxRegisters32
{
msr, iar, lr, cr, xer
};
cpp_quote("}")
cpp_quote("/*")
typedef enum XboxRegisters32 _XboxRegisters32;
cpp_quote("*/ typedef eXboxRegisters32::XboxRegisters32 _XboxRegisters32;")
cpp_quote("namespace eXboxRegisters64{")
[v1_enum] enum XboxRegisters64
{
ctr,
r0, r1, r2, r3, r4, r5, r6, r7,
r8, r9, r10, r11, r12, r13, r14, r15,
r16, r17, r18, r19, r20, r21, r22, r23,
r24, r25, r26, r27, r28, r29, r30, r31
};
cpp_quote("}")
cpp_quote("/*")
typedef enum XboxRegisters64 _XboxRegisters64;
cpp_quote("*/ typedef eXboxRegisters64::XboxRegisters64 _XboxRegisters64;")
cpp_quote("namespace eXboxRegistersDouble{")
[v1_enum] enum XboxRegistersDouble
{
fp0, fp1, fp2, fp3, fp4, fp5, fp6, fp7,
fp8, fp9, fp10, fp11, fp12, fp13, fp14, fp15,
fp16, fp17, fp18, fp19, fp20, fp21, fp22, fp23,
fp24, fp25, fp26, fp27, fp28, fp29, fp30, fp31,
fpscr
};
cpp_quote("}")
cpp_quote("/*")
typedef enum XboxRegistersDouble _XboxRegistersDouble;
cpp_quote("*/ typedef eXboxRegistersDouble::XboxRegistersDouble _XboxRegistersDouble;")
cpp_quote("namespace eXboxRegistersVector{")
[v1_enum] enum XboxRegistersVector
{
v0, v1, v2, v3, v4, v5, v6, v7,
v8, v9, v10, v11, v12, v13, v14, v15,
v16, v17, v18, v19, v20, v21, v22, v23,
v24, v25, v26, v27, v28, v29, v30, v31,
v32, v33, v34, v35, v36, v37, v38, v39,
v40, v41, v42, v43, v44, v45, v46, v47,
v48, v49, v50, v51, v52, v53, v54, v55,
v56, v57, v58, v59, v60, v61, v62, v63,
v64, v65, v66, v67, v68, v69, v70, v71,
v72, v73, v74, v75, v76, v77, v78, v79,
v80, v81, v82, v83, v84, v85, v86, v87,
v88, v89, v90, v91, v92, v93, v94, v95,
v96, v97, v98, v99, v100, v101, v102, v103,
v104, v105, v106, v107, v108, v109, v110, v111,
v112, v113, v114, v115, v116, v117, v118, v119,
v120, v121, v122, v123, v124, v125, v126, v127,
vscr
};
cpp_quote("}")
cpp_quote("/*")
typedef enum XboxRegistersVector _XboxRegistersVector;
cpp_quote("*/ typedef eXboxRegistersVector::XboxRegistersVector _XboxRegistersVector;")
[
object,
uuid(eabf8976-1a2f-4aaa-bbbb-3ecab03b2ee9),
dual,
oleautomation,
pointer_default(unique),
helpstring("a stack frame on a thread")
]
interface IXboxStackFrame: IDispatch
{
[propget, id(1)] HRESULT TopOfStack([out,retval] VARIANT_BOOL *TopOfStack);
[propget, id(2)] HRESULT Dirty([out,retval] VARIANT_BOOL *Dirty);
[propget, id(3)] HRESULT NextStackFrame([out,retval] IXboxStackFrame **StackFrame);
// Registers are grouped by data type.
[id(100)] HRESULT GetRegister32(
[in] _XboxRegisters32 Register,
[out] LONG* Value,
[out, retval] VARIANT_BOOL *IsValid
);
[id(101)] HRESULT SetRegister32(
[in] _XboxRegisters32 Register,
[in] LONG Value
);
[id(102)] HRESULT GetRegister64(
[in] _XboxRegisters64 Register,
[out] LONGLONG* Value,
[out, retval] VARIANT_BOOL *IsValid
);
[id(103)] HRESULT SetRegister64(
[in] _XboxRegisters64 Register,
[in] LONGLONG Value
);
[id(104)] HRESULT GetRegisterDouble(
[in] _XboxRegistersDouble Register,
[out] double* Value,
[out, retval] VARIANT_BOOL *IsValid
);
[id(105)] HRESULT SetRegisterDouble(
[in] _XboxRegistersDouble Register,
[in] double Value
);
[id(106),hidden] HRESULT GetRegisterVector_cpp(
[in] _XboxRegistersVector Register,
[out, size_is(4), length_is(4)] float* Value,
[out, retval] VARIANT_BOOL *IsValid
);
[id(107),hidden] HRESULT SetRegisterVector_cpp(
[in] _XboxRegistersVector Register,
[in, size_is(4), length_is(4)] float *Value
);
[id(108)] HRESULT GetRegisterVector(
[in] _XboxRegistersVector Register,
SAFEARRAY(float) Value,
[out, retval] VARIANT_BOOL *IsValid
);
[id(109)] HRESULT SetRegisterVector(
[in] _XboxRegistersVector Register,
SAFEARRAY(float) Value
);
[id(110)] HRESULT FlushRegisterChanges();
[propget, id(111)] HRESULT FunctionInfo([out,retval]XBOX_FUNCTION_INFO *FunctionInfo);
[propget, id(112)] HRESULT StackPointer([out,retval]DWORD *StackPointer);
[propget, id(113)] HRESULT ReturnAddress([out,retval]DWORD *ReturnAddress);
};
[
object,
uuid(7f8e857b-fd59-4b67-8156-faa3fd06d1e5),
dual,
oleautomation,
nonextensible,
pointer_default(unique),
helpstring("Collection of memory regions")
]
interface IXboxMemoryRegions : IDispatch
{
[id(DISPID_VALUE),propget] HRESULT Item( [in] LONG Index, [out, retval] IXboxMemoryRegion **MemoryRegion);
[id(1), propget] HRESULT Count([out, retval]LONG *Count);
[id(DISPID_NEWENUM), propget] HRESULT _NewEnum( [out, retval] IEnumVARIANT **Enumerator);
};
cpp_quote("namespace eXboxMemoryRegionFlags{")
[v1_enum] enum XboxMemoryRegionFlags
{
NoAccess = 0x01,
ReadOnly = 0x02,
ReadWrite = 0x04,
WriteCopy = 0x08,
Execute = 0x10,
ExecuteRead = 0x20,
ExecuteReadWrite = 0x40,
ExecuteWriteCopy = 0x80,
Guard = 0x100,
NoCache = 0x200,
WriteCombine = 0x400,
UserReadOnly = 0x1000,
UserReadWrite = 0x2000
};
cpp_quote("}")
cpp_quote("/*")
typedef enum XboxMemoryRegionFlags _XboxMemoryRegionFlags;
cpp_quote("*/ typedef int _XboxMemoryRegionFlags;")
[
object,
uuid(4f882a21-7f2a-4bea-a0a3-a3710a93deea),
dual,
oleautomation,
nonextensible,
pointer_default(unique),
helpstring("Memory Region Info")
]
interface IXboxMemoryRegion : IDispatch
{
[propget, id(1)] HRESULT BaseAddress([out,retval] LONG *BaseAddress);
[propget, id(2)] HRESULT RegionSize([out,retval] LONG *RegionSize);
[propget, id(3)] HRESULT Flags([out,retval] _XboxMemoryRegionFlags *Flags);
};
[
uuid(85c9127a-11ed-47f2-9e87-a83058fc264a),
dual,
oleautomation
]
interface IXboxEventInfo : IDispatch
{
[id(DISPID_VALUE), propget] HRESULT Info( [out, retval] PXBOX_EVENT_INFO EventInfo);
}
const DISPID DISPID_XBOX_EVENT = 1;
const DISPID DISPID_XBOX_TEXT_EVENT = 2;
[
uuid(420208df-c38c-4efb-9fc3-acd50350941e)
]
dispinterface XboxEvents
{
properties:
methods:
[id(DISPID_XBOX_EVENT)] void OnStdNotify( [in] _XboxDebugEventType EventCode, [in]IXboxEventInfo *eventInfo);
[id(DISPID_XBOX_TEXT_EVENT)] void OnTextNotify( [in] BSTR Source, [in] BSTR Notification );
};
[
uuid(e3c9d73f-9df0-4b57-8cee-05f9ca6823be),
oleautomation
]
interface IXboxEvents : IUnknown
{
HRESULT OnStdNotify( [in] _XboxDebugEventType EventCode, [in]IXboxEventInfo *eventInfo);
HRESULT OnTextNotify( [in] BSTR Source, [in] BSTR Notification );
};
[
uuid(d7a62fa2-524f-4f0d-8025-e72f9ff3eff6),
version(1.0),
helpstring("Xbox Development Kit API 2.0")
]
library XDevkit
{
importlib("stdole2.tlb");
struct XBOX_PROCESS_INFO;
enum XboxAccessFlags;
struct XBOX_USER;
enum XboxModuleInfoFlags;
struct XBOX_MODULE_INFO;
enum XboxSectionInfoFlags;
struct XBOX_SECTION_INFO;
struct XBOX_THREAD_INFO;
enum XboxFunctionType;
struct XBOX_FUNCTION_INFO;
enum XboxDebugEventType;
enum XboxExecutionState;
enum XboxStopOnFlags;
enum XboxRebootFlags;
enum XboxExceptionFlags;
struct XBOX_EVENT_INFO;
enum XboxBreakpointType;
enum XboxSelectConsoleFlags;
enum XboxDebugConnectFlags;
enum XboxDumpFlags;
enum XboxDumpMode;
enum XboxEventDeferFlags;
enum XboxDumpReportFlags;
struct XBOX_DUMP_SETTINGS;
interface IXboxManager;
enum XboxCreateDisposition;
interface IXboxConsole;
interface IXboxConsoles;
interface IXboxFile;
interface IXboxFiles;
interface IXboxUser;
interface IXboxUsers;
interface IXboxDebugTarget;
interface IXboxModule;
interface IXboxModules;
interface IXboxSection;
interface IXboxSections;
interface IXboxThread;
interface IXboxThreads;
enum XboxRegisters32;
enum XboxRegisters64;
enum XboxRegistersDouble;
enum XboxRegistersVector;
interface IXboxStackFrame;
interface IXboxMemoryRegions;
enum XboxMemoryRegionFlags;
interface IXboxMemoryRegion;
interface IXboxEventInfo;
dispinterface XboxEvents;
interface IXboxEvents;
[
uuid(3ed2b073-99a1-42db-80cc-295e9ffba18f),
helpstring("Xbox Console Object")
]
coclass XboxConsole
{
[default] interface IXboxConsole;
[default, source] interface XboxEvents;
};
[
uuid(a5eb45d8-f3b6-49b9-984a-0d313ab60342),
helpstring("Xbox Manager Object")
]
coclass XboxManager
{
[default] interface IXboxManager;
};
[
uuid(3151B328-4A0D-4b83-950F-6861AB6B3ECD),
helpstring("Xbox Executable Database Object")
]
coclass XboxExecutableDatabase
{
[default] interface IXboxExecutableDatabase;
};
};