/*************************************************************************** * * 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 IcaStackQueryLocalAddress( 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