Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

317 lines
5.5 KiB

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