⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vcecominterfaces.idl

📁 EVC4.rar
💻 IDL
📖 第 1 页 / 共 2 页
字号:
/*==================================================================
	File:		VCEComInterfaces.idl
	
	Contains:	Definition of VirtualCE's COM interfaces.
	
				This file is compiled by the MIDL.exe tool
				to create the C/C++ header files, code for
				building the marshalling DLL, and the
				type library (VCEComInterfaces.tlb)
				
	Written by:	Jake Hoelter
	
	Copyright:	2001 Connectix Corporation
==================================================================*/

import "oaidl.idl";		// Standard types
import "ocidl.idl";

cpp_quote( "const ULONG kVCETypeLibrary_MajorVersion = 1;" )
cpp_quote( "const ULONG kVCETypeLibrary_MinorVersion = 0;" )


/*------------------------------------------------------------------
	IDMATransportCompletionSink interface.
	
------------------------------------------------------------------*/
[
	object,
	uuid(AC6A6347-ECE0-46c1-B668-9DF3A17153C8),
	helpstring("IDMATransportCompletionSink Interface"),
	pointer_default(unique)
]

// {AC6A6347-ECE0-46c1-B668-9DF3A17153C8}
//	DEFINE_GUID(<<name>>,0xac6a6347, 0xece0, 0x46c1, 0xb6, 0x68, 0x9d, 0xf3, 0xa1, 0x71, 0x53, 0xc8);

interface IDMATransportCompletionSink : IUnknown
{
	HRESULT CompletionCallback( 
		[in] DWORD	stage );
};

/*------------------------------------------------------------------
	IEmulatorVirtualMachineManager interface.
	
	This interface allows the caller to manipulate virtual machines
	within VirtualCE. It effectively replaces the standard
	VirtualPC configuration dialog with a programmatic interface.
	
	It is used by Microsoft's CE Platform Builder tools to
	control the virtual machines.
------------------------------------------------------------------*/
[
	object,
	uuid(71D756A3-B729-472b-9C90-12F393A9BFF8),
	helpstring("IEmulatorVirtualMachineManager Interface"),
	pointer_default(unique)
]

interface IEmulatorVirtualMachineManager : IUnknown
{
	[ helpstring("Gets count of all virtual machines available (running or not)") ]
	HRESULT GetVirtualMachineCount(
		[out, retval] ULONG* numberOfVMs );
	
	[ helpstring("Gets array of GUIDs of all virtual machines available (running or not)") ]
	HRESULT EnumerateVirtualMachines(
		[in, out] ULONG* numberOfVMs,
		[out, size_is(*numberOfVMs)] GUID virtualMachineID[] );
	
	[ helpstring("Tests if a virtual machine is running or not, returns error if unknown machine ID") ]
	HRESULT IsVirtualMachineRunning(
		[in]  		  GUID*		virtualMachineID,
		[out, retval] boolean*	isRunning );
		
	[ helpstring("Resets a virtual machine, either a hard or soft reset") ]
	HRESULT ResetVirtualMachine(
		[in] GUID*		virtualMachineID,
		[in] boolean	hardReset );
	
	[ helpstring("Starts a new virtual machine using command line parameters") ]
	HRESULT CreateVirtualMachine(
		[in] LPOLESTR	commandLine );
	
	[ helpstring("Starts a new virtual machine using command line parameters and installs a callback for DMA transport completion routine") ]
	HRESULT CreateVirtualMachineWithTransportCompletion(
		[in] LPOLESTR						commandLine,
		[in]IDMATransportCompletionSink*	completionSink,
		[in] DWORD 							dmaTransportCompletionRoutineIdentifier ); // IRQ of desired DMA channel
		
	[ helpstring("Shuts down a virtual machine, optionally saving the state") ]
	HRESULT ShutdownVirtualMachine(
		[in] GUID*		virtualMachineID,
		[in] boolean	saveMachine );
	
	[ helpstring("Restores a previously saved virtual machine") ]
	HRESULT RestoreVirtualMachine(
		[in] GUID*		virtualMachineID );
		
	[ helpstring("Restores a previously saved virtual machine and installs a callback for DMA transport completion routine") ]
	HRESULT RestoreVirtualMachineWithTransportCompletion(
		[in] GUID*							virtualMachineID,
		[in]IDMATransportCompletionSink*	completionSink,
		[in] DWORD 							dmaTransportCompletionRoutineIdentifier ); // IRQ of desired DMA channel
	
	[ helpstring("Deletes a previously saved virtual machine") ]
	HRESULT DeleteVirtualMachine(
		[in] GUID*		virtualMachineID );
	
	[ helpstring("Returns the name of a virtual machine") ]
	HRESULT GetVirtualMachineName(
		[in]  GUID*		virtualMachineID,
		[out] LPOLESTR*	virtualMachineName );
	
	[ helpstring("Sets the name of a virtual machine") ]
	HRESULT SetVirtualMachineName(
		[in] GUID*		virtualMachineID,
		[in] LPOLESTR	virtualMachineName );
		
	[ helpstring("Un-installs a callback for DMA transport completion routine.") ]
	HRESULT UninstallVirtualMachineDMATransportCompletionRoutine (
		[in] GUID*		inVirtualMachineID,
		[in] DWORD 		inId ); // IRQ of desired DMA channel
	
	[ helpstring("Bring a VM Window to be frontmost") ]
	HRESULT BringVirtualMachineToFront(
		[in] GUID*		virtualMachineID );
		
	HRESULT VirtualMachineManagerVersion(
	[out]DWORD* version );

};


/*------------------------------------------------------------------
	IEmulatorVirtualTransportSink interface.
	
	This is used as a callback by the IEmulatorVirtualTransport
	interface. The IEmulatorVirtualTransport object
	will call this sink when data is available.
------------------------------------------------------------------*/
[
	object,
	uuid(6747A265-2720-4c36-B778-51CD2D10524A),
	helpstring("IEmulatorVirtualTransportSink Interface"),
	pointer_default(unique)
]

interface IEmulatorVirtualTransportSink : IUnknown
{
	HRESULT ReceiveData(
		[in]					 ULONG	transportID,
		[in, size_is(byteCount)] const BYTE* dataBuffer,
		[in]					 USHORT	byteCount );
};


/*------------------------------------------------------------------
	IEmulatorVirtualTransport interface.
	
	This interface provides the connection to the kernel
	independent transport layer (KITL) to allow the Windows CE
	kernel to talk to Microsoft's Windows CE Platform Builder
	development tool. It will connect to a virtual transport
	device in the emulator.
	
	If a CE kernel is built with the emulator's kitl (a part
	of the HAL that knows how to talk to this virtual
	transport device), then the CE kernel can be debugged
	using Platform Builder.
	
	The bottom layer transport interface to Platform Builder
	is exposed as a .DLL interface rather than a COM
	interface, unfortunately. This interface mirrors the .dll
	transport interface, and the .dll simply passes calls
	through to this COM interface.
------------------------------------------------------------------*/
[
	object,
	uuid(F3D1162F-B815-4ae4-8C86-DC4A95FB3882),
	helpstring("IEmulatorVirtualTransport Interface"),
	pointer_default(unique)
]

interface IEmulatorVirtualTransport : IUnknown
{
	HRESULT Initialize();
	
	HRESULT TearDown();
	
	[ helpstring("Creates a new transport channel.") ]
	HRESULT Create(
		[in]  GUID*			virtualMachineID,
		[in]  ULONG			dmaChannel,
		[out] ULONG*		transportID );
	
	[ helpstring("Deletes a transport channel.") ]
	HRESULT Delete(
		[in] ULONG transportID );
	
	[ helpstring("Installs a callback for data receiving.") ]
	HRESULT Advise(
		[in]  IEmulatorVirtualTransportSink*	transportSink );
	
	[ helpstring("Sends data across the transport.") ]
	HRESULT Send(
		[in]					 ULONG	transportID,
		[in, size_is(byteCount)] const BYTE* dataBuffer,
		[in]					 USHORT	byteCount,
		[in]					 ULONG	timeout );
		
	[ helpstring("Polls for data received from the transport, only works if datasink hasn't been installed.") ]
	HRESULT Receive(
		[in]					   ULONG    transportID,
		[out, size_is(*byteCount), length_is(*byteCount)] BYTE*   dataBuffer,
		[in, out]				   USHORT* byteCount,
		[in]					   ULONG   timeout );
	
	[ helpstring("Indicates which virtual machine a transport should be talking to.") ]
	HRESULT SetVirtualMachineIDForTransport(
		[in] ULONG		transportID,
		[in] GUID*		virtualMachineID );
};

#if 0

/*------------------------------------------------------------------
	IVirtualMachineManagerPB interface.
	
	This interface allows the caller to manipulate virtual machines
	within VirtualCE. It effectively replaces the standard
	VirtualPC configuration dialog with a programmatic interface.
	
	It is used by Microsoft's CE Platform Builder tools to
	control the virtual machines.
------------------------------------------------------------------*/
[
	object,
	uuid(D057809F-CB63-4c28-A7E7-83A0E3E9F57C),
	helpstring("IVirtualMachineManagerPB Interface"),
	pointer_default(unique)
]
interface IVirtualMachineManagerPB : IUnknown
{
	[ helpstring("Gets count of all virtual machines available (running or not)") ]
	HRESULT GetVirtualMachineCount(
		[out, retval] ULONG* numberOfVMs );
	
	[ helpstring("Gets array of GUIDs of all virtual machines available (running or not)") ]
	HRESULT EnumerateVirtualMachines(
		[in, out] ULONG* numberOfVMs,
		[out, size_is(*numberOfVMs)] GUID virtualMachineID[] );
	
	[ helpstring("Tests if a virtual machine is running or not, returns error if unknown machine ID") ]
	HRESULT IsVirtualMachineRunning(
		[in]  		  GUID*		virtualMachineID,
		[out, retval] boolean*	isRunning );
	
	[ helpstring("Resets a virtual machine, either a hard or soft reset") ]
	HRESULT ResetVirtualMachine(
		[in] GUID*		virtualMachineID,
		[in] boolean	hardReset );
	
	[ helpstring("Starts a new virtual machine using command line parameters") ]
	HRESULT CreateVirtualMachine(
		[in] LPOLESTR	commandLine );
	
	[ helpstring("Shuts down a virtual machine, optionally saving the state") ]
	HRESULT ShutdownVirtualMachine(
		[in] GUID*		virtualMachineID,
		[in] boolean	saveMachine );
	
	[ helpstring("Restores a previously saved virtual machine") ]
	HRESULT RestoreVirtualMachine(
		[in] GUID*		virtualMachineID );
	
	[ helpstring("Deletes a previously saved virtual machine") ]
	HRESULT DeleteVirtualMachine(
		[in] GUID*		virtualMachineID );
	
	[ helpstring("Returns the name of a virtual machine") ]
	HRESULT GetVirtualMachineName(
		[in]  GUID*		virtualMachineID,
		[out] LPOLESTR*	virtualMachineName );
	
	[ helpstring("Sets the name of a virtual machine") ]
	HRESULT SetVirtualMachineName(
		[in] GUID*		virtualMachineID,
		[in] LPOLESTR	virtualMachineName );
};


/*------------------------------------------------------------------
	IVirtualTransportSinkPB interface.
	
	This is used as a callback by the IVirtualTransport
	interface. The IVirtualTransport object
	will call this sink when data is available.
------------------------------------------------------------------*/
[
	object,
	uuid(80D16A14-1241-4539-B937-651821A4C9D7),
	helpstring("IVirtualTransportSinkPB Interface"),
	pointer_default(unique)
]
interface IVirtualTransportSinkPB : IUnknown
{
	HRESULT ReceiveData(
		[in]					 ULONG	transportID,
		[in, size_is(byteCount)] const BYTE* dataBuffer,
		[in]					 USHORT	byteCount );
};


/*------------------------------------------------------------------
	IVirtualTransportPB interface.
	
	This interface provides the connection to the kernel
	independent transport layer (KITL) to allow the Windows CE
	kernel to talk to Microsoft's Windows CE Platform Builder
	development tool. It will connect to a virtual transport
	device in the emulator.
	
	If a CE kernel is built with the emulator's kitl (a part
	of the HAL that knows how to talk to this virtual
	transport device), then the CE kernel can be debugged
	using Platform Builder.
	
	The bottom layer transport interface to Platform Builder

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -