terminal/src/host/proxy/IConsoleHandoff.idl
Leonard Hecker 1f83146644
Add ITerminalHandoff3 in preparation for overlapped pipes (#17575)
Without a renderer in #17510 we cannot skip "frames" anymore.
As such, using overlapped IO becomes crucial to avoid a regression
in performance. ITerminalHandoff3 fixes this by allowing the terminal
to pick the pipes it wants, which mirrors CreatePseudoConsole
where the caller can also pick its own pipes.

## Validation Steps Performed
* Do a handoff with the dev build
* Input/Output works 
2024-07-17 03:03:11 +02:00

39 lines
1.2 KiB
Plaintext

// Copyright (c) Microsoft Corporation.
// Licensed under the MIT license.
import "unknwn.idl";
typedef struct _CONSOLE_PORTABLE_ATTACH_MSG
{
DWORD IdLowPart;
LONG IdHighPart;
ULONG64 Process;
ULONG64 Object;
ULONG Function;
ULONG InputSize;
ULONG OutputSize;
} CONSOLE_PORTABLE_ATTACH_MSG;
typedef CONSOLE_PORTABLE_ATTACH_MSG* PCONSOLE_PORTABLE_ATTACH_MSG;
typedef const CONSOLE_PORTABLE_ATTACH_MSG* PCCONSOLE_PORTABLE_ATTACH_MSG;
[
object,
uuid(E686C757-9A35-4A1C-B3CE-0BCC8B5C69F4)
] interface IConsoleHandoff : IUnknown
{
HRESULT EstablishHandoff([in, system_handle(sh_file)] HANDLE server,
[in, system_handle(sh_event)] HANDLE inputEvent,
[in, ref] PCCONSOLE_PORTABLE_ATTACH_MSG msg,
[in, system_handle(sh_pipe)] HANDLE signalPipe,
[in, system_handle(sh_process)] HANDLE inboxProcess,
[out, system_handle(sh_process)] HANDLE* process);
};
[
object,
uuid(746E6BC0-AB05-4E38-AB14-71E86763141F)
] interface IDefaultTerminalMarker : IUnknown
{
};