|
|
/*************************************************************************
* * icap.h * * This module contains routine prototypes for the ICA driver. * * Copyright 1998, Microsoft. * *************************************************************************/
NTSTATUS DriverEntry ( IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath );
BOOLEAN IcaInitializeData ( VOID );
VOID _cdecl IcaTrace( IN ULONG TraceClass, IN ULONG TraceEnable, IN CHAR * Format, IN ... );
VOID IcaTraceBuffer( IN ULONG TraceClass, IN ULONG TraceEnable, IN PVOID pBuffer, IN ULONG ByteCount );
VOID IcaTraceFormat( IN PICA_TRACE_INFO pTraceInfo, IN ULONG TraceClass, IN ULONG TraceEnable, IN PCHAR pData );
NTSTATUS IcaDispatch ( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp );
NTSTATUS IcaCreateConnection ( IN PIRP Irp, IN PIO_STACK_LOCATION IrpSp );
NTSTATUS IcaCreateStack ( IN PICA_CONNECTION pConnect, IN PICA_OPEN_PACKET openPacket, IN PIRP Irp, IN PIO_STACK_LOCATION IrpSp );
NTSTATUS IcaCreateChannel ( IN PICA_CONNECTION pConnect, IN PICA_OPEN_PACKET openPacket, IN PIRP Irp, IN PIO_STACK_LOCATION IrpSp );
/*
* Channel IO dispatch routines */ NTSTATUS IcaDeviceControlKeyboard ( IN PICA_CHANNEL pChannel, IN PIRP Irp, IN PIO_STACK_LOCATION IrpSp );
NTSTATUS IcaDeviceControlMouse ( IN PICA_CHANNEL pChannel, IN PIRP Irp, IN PIO_STACK_LOCATION IrpSp );
NTSTATUS IcaDeviceControlVideo ( IN PICA_CHANNEL pChannel, IN PIRP Irp, IN PIO_STACK_LOCATION IrpSp );
NTSTATUS IcaDeviceControlBeep ( IN PICA_CHANNEL pChannel, IN PIRP Irp, IN PIO_STACK_LOCATION IrpSp );
NTSTATUS IcaDeviceControlConsole ( IN PICA_CHANNEL pChannel, IN PIRP Irp, IN PIO_STACK_LOCATION IrpSp );
NTSTATUS IcaDeviceControlVirtual ( IN PICA_CHANNEL pChannel, IN PIRP Irp, IN PIO_STACK_LOCATION IrpSp );
/*
* Stack Driver (SD) call routine */ NTSTATUS IcaCallDriver( IN PICA_CHANNEL pChannel, IN ULONG ProcIndex, IN PVOID pParms );
/*
* Miscellaneous worker routines */ VOID IcaReferenceConnection( IN PICA_CONNECTION pConnect );
VOID IcaDereferenceConnection( IN PICA_CONNECTION pConnect );
PICA_CHANNEL IcaFindChannelByName( IN PICA_CONNECTION pConnect, IN CHANNELCLASS ChannelClass, IN PVIRTUALCHANNELNAME pVirtualName );
PICA_CHANNEL IcaFindChannel( IN PICA_CONNECTION pConnect, IN CHANNELCLASS ChannelClass, IN VIRTUALCHANNELCLASS VirtualClass );
VOID IcaReferenceChannel( IN PICA_CHANNEL pChannel );
VOID IcaDereferenceChannel(IN PICA_CHANNEL);
BOOLEAN IcaLockChannelTable( PERESOURCE pResource);
void IcaUnlockChannelTable( PERESOURCE pResource);
VOID IcaReferenceStack( IN PICA_STACK pStack );
VOID IcaDereferenceStack( IN PICA_STACK pStack );
VOID IcaReferenceSdLink( IN PSDLINK pSdLink );
VOID IcaDereferenceSdLink( IN PSDLINK pSdLink );
PSDLINK IcaGetNextSdLink( IN PSDLINK pSdLink );
PSDLINK IcaGetPreviousSdLink( IN PSDLINK pSdLink );
VOID IcaKeepAliveThread( IN PVOID pData );
NTSTATUS CaptureUsermodeBuffer ( IN PIRP Irp, IN PIO_STACK_LOCATION IrpSp, OUT PVOID *pInBuffer, IN ULONG InBufferSize, OUT PVOID *pOutBuffer, IN ULONG OutBufferSize, IN BOOLEAN MethodBuffered, OUT PVOID *pAllocatedTemporaryBuffer );
/*
* Internal versions of Stack Driver helper routines */ NTSTATUS IcaBufferAllocInternal( IN PSDCONTEXT pContext, IN BOOLEAN bWait, IN BOOLEAN bControl, IN ULONG ByteCount, IN POUTBUF pOutBufOrig, OUT POUTBUF *ppOutBuf );
VOID IcaBufferFreeInternal( IN PSDCONTEXT pContext, IN POUTBUF pOutBuf );
NTSTATUS IcaRawInputInternal( IN PICA_STACK pStack, IN PINBUF pInBuf OPTIONAL, IN PCHAR pBuffer OPTIONAL, IN ULONG ByteCount );
NTSTATUS IcaChannelInputInternal( IN PICA_STACK pStack, IN CHANNELCLASS ChannelClass, IN VIRTUALCHANNELCLASS VirtualClass, IN PINBUF pInBuf OPTIONAL, IN PCHAR pBuffer OPTIONAL, IN ULONG ByteCount );
void IcaInitializeHandleTable( void ); void IcaCleanupHandleTable( void );
/*
* Routines to handle fast IO. */ #ifdef notdef
BOOLEAN IcaFastIoRead ( IN struct _FILE_OBJECT *FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, IN BOOLEAN Wait, IN ULONG LockKey, OUT PVOID Buffer, OUT PIO_STATUS_BLOCK IoStatus, IN struct _DEVICE_OBJECT *DeviceObject );
BOOLEAN IcaFastIoWrite ( IN struct _FILE_OBJECT *FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, IN BOOLEAN Wait, IN ULONG LockKey, IN PVOID Buffer, OUT PIO_STATUS_BLOCK IoStatus, IN struct _DEVICE_OBJECT *DeviceObject );
BOOLEAN IcaFastIoDeviceControl ( IN struct _FILE_OBJECT *FileObject, IN BOOLEAN Wait, IN PVOID InputBuffer OPTIONAL, IN ULONG InputBufferLength, OUT PVOID OutputBuffer OPTIONAL, IN ULONG OutputBufferLength, IN ULONG IoControlCode, OUT PIO_STATUS_BLOCK IoStatus, IN struct _DEVICE_OBJECT *DeviceObject ); #endif
|