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