windows-nt/Source/XPSP1/NT/public/internal/termsrv/inc/icaapi.h
2020-09-26 16:20:57 +08:00

212 lines
6.4 KiB
C

/***************************************************************************
*
* ICAAPI.H
*
* This module contains defines, structures, and function prototypes
* for the ICA DLL (ICAAPI.DLL) interface to the Terminal Server Termdd Device Driver.
*
*
* Copyright Microsoft Corporation, 1998
*
*
****************************************************************************/
#ifdef __cplusplus
extern "C" {
#endif
/*
* Function prototypes
*/
NTSTATUS
IcaOpen( OUT HANDLE * phIca );
NTSTATUS
IcaClose( IN HANDLE hIca );
NTSTATUS
IcaStackUnlock( IN HANDLE pContext );
VOID cdecl
IcaSystemTrace( IN HANDLE hIca, ULONG, ULONG, char *, ... );
VOID cdecl
IcaTrace( IN HANDLE hIca, ULONG, ULONG, char *, ... );
NTSTATUS
IcaIoControl( IN HANDLE hIca,
IN ULONG IoControlCode,
IN PVOID pInBuffer,
IN ULONG InBufferSize,
OUT PVOID pOutBuffer,
IN ULONG OutBufferSize,
OUT PULONG pBytesReturned );
NTSTATUS
IcaStackOpen( IN HANDLE hIca,
IN STACKCLASS Class, // primary, shadow, passthrough
IN PROC pStackIoControl, // pointer to StackIoControl procedure
IN PVOID Context, // context value passed to above proc
OUT HANDLE * phStack );
NTSTATUS
IcaStackClose( IN HANDLE hStack );
NTSTATUS
IcaStackTerminate( IN HANDLE hStack );
VOID cdecl
IcaStackTrace( IN HANDLE hStack, ULONG, ULONG, char *, ... );
NTSTATUS
IcaStackConnectionWait( IN HANDLE hStack,
IN PWINSTATIONNAME pWinStationName,
IN PWINSTATIONCONFIG2 pWinStationConfig,
IN PICA_STACK_ADDRESS pAddress,
OUT PVOID pEndpoint,
IN ULONG BufferLength,
OUT PULONG pEndpointLength );
NTSTATUS
IcaStackConnectionRequest( IN HANDLE hStack,
IN PWINSTATIONNAME pWinStationName,
IN PWINSTATIONCONFIG2 pWinStationConfig,
IN PICA_STACK_ADDRESS pAddress,
OUT PVOID pEndpoint,
IN ULONG BufferLength,
OUT PULONG pEndpointLength );
NTSTATUS
IcaStackConnectionAccept( IN HANDLE hIca,
IN HANDLE hStack,
IN PWINSTATIONNAME pWinStationName,
IN PWINSTATIONCONFIG2 pWinStationConfig,
IN PVOID pEndpoint,
IN ULONG EndpointLength,
IN PICA_STACK_STATE_HEADER pStackState,
IN ULONG BufferLength,
IN PICA_TRACE pTrace );
NTSTATUS
IcaStackQueryState( IN HANDLE hStack,
OUT PICA_STACK_STATE_HEADER pStackState,
IN ULONG BufferLength,
OUT PULONG pStateLength );
NTSTATUS
IcaStackCreateShadowEndpoint( HANDLE pContext,
PWINSTATIONNAME pWinStationName,
PWINSTATIONCONFIG2 pWinStationConfig,
PICA_STACK_ADDRESS pAddressIn,
PICA_STACK_ADDRESS pAddressOut );
NTSTATUS
IcaStackConnectionClose( IN HANDLE hStack,
IN PWINSTATIONCONFIG2 pWinStationConfig,
IN PVOID pEndpoint,
IN ULONG EndpointLength );
NTSTATUS
IcaStackCallback( IN HANDLE hStack,
IN PWINSTATIONCONFIG2 pWinStationConfig,
IN WCHAR * pPhoneNumber,
OUT PVOID pEndpoint,
IN ULONG BufferLength,
OUT PULONG pEndpointLength );
NTSTATUS
IcaStackDisconnect( IN HANDLE hStack,
IN HANDLE hIca,
IN PVOID pCallbackContext );
NTSTATUS
IcaStackReconnect( IN HANDLE hStack,
IN HANDLE hIca,
IN PVOID pCallbackContext,
IN ULONG sessionId);
NTSTATUS
IcaStackIoControl( IN HANDLE hStack,
IN ULONG IoControlCode,
IN PVOID pInBuffer,
IN ULONG InBufferSize,
OUT PVOID pOutBuffer,
IN ULONG OutBufferSize,
OUT PULONG pBytesReturned );
//
// This version of IcaStackIoControl is not protected by the stack critical
// section.
//
NTSTATUS
_IcaStackIoControl( IN HANDLE hStack,
IN ULONG IoControlCode,
IN PVOID pInBuffer,
IN ULONG InBufferSize,
OUT PVOID pOutBuffer,
IN ULONG OutBufferSize,
OUT PULONG pBytesReturned );
NTSTATUS
IcaCdIoControl( IN HANDLE hStack,
IN ULONG IoControlCode,
IN PVOID pInBuffer,
IN ULONG InBufferSize,
OUT PVOID pOutBuffer,
IN ULONG OutBufferSize,
OUT PULONG pBytesReturned );
NTSTATUS
IcaCdWaitForSingleObject( HANDLE pContext,
HANDLE hHandle,
LONG Timeout );
NTSTATUS
IcaCdWaitForMultipleObjects( HANDLE pContext,
ULONG Count,
HANDLE * phHandle,
BOOL bWaitAll,
LONG Timeout );
HANDLE
IcaCdCreateThread( HANDLE pContext,
PVOID pProc,
PVOID pParam,
PULONG pThreadId );
NTSTATUS
IcaChannelOpen( IN HANDLE hIca,
IN CHANNELCLASS Channel, // cmd,con,video,mou,beep,kbd,virtual
IN PVIRTUALCHANNELNAME pVirtualName,
OUT HANDLE * phChannel );
NTSTATUS
IcaChannelClose( IN HANDLE hChannel );
NTSTATUS
IcaChannelIoControl( IN HANDLE hChannel,
IN ULONG IoControlCode,
IN PVOID pInBuffer,
IN ULONG InBufferSize,
OUT PVOID pOutBuffer,
IN ULONG OutBufferSize,
OUT PULONG pBytesReturned );
VOID cdecl
IcaChannelTrace( IN HANDLE hChannel, ULONG, ULONG, char *, ... );
VOID
IcaBreakOnDebugger( );
NTSTATUS
IcaPushConsoleStack( IN HANDLE pContext,
IN PWINSTATIONNAME pWinStationName,
IN PWINSTATIONCONFIG2 pWinStationConfig,
IN PVOID pModuleData,
IN ULONG ModuleDataLength );
#ifdef __cplusplus
}
#endif