/*++ Copyright (c) 1998-2000 Microsoft Corporation Module Name : channel.h Abstract: Revision History: --*/ #pragma once class VirtualChannel : public RefCount { private: ULONG _LowPrioChannelWriteFlags; HANDLE _Channel; // NT handle for the channel PFILE_OBJECT _ChannelFileObject; // the fileobject for the channel PDEVICE_OBJECT _ChannelDeviceObject; // the deviceobject for the channel KernelResource _HandleLock; PKEVENT _DeletionEvent; NTSTATUS CreateTermDD(HANDLE *Channel, HANDLE hIca, ULONG SessionID, ULONG ChannelId); NTSTATUS SubmitIo(IN PIO_COMPLETION_ROUTINE CompletionRoutine OPTIONAL, IN PVOID Context, OUT PVOID Buffer, IN ULONG Length, ULONG IoOperation, BOOL bWorkerItem, BOOL LowPrioWrite); static VOID IoWorker(PDEVICE_OBJECT DeviceObject, PVOID Context); NTSTATUS Io( IN PIO_COMPLETION_ROUTINE CompletionRoutine OPTIONAL, IN PVOID Context, OUT PVOID Buffer, IN ULONG Length, ULONG IoOperation, BOOL LowPrioWrite ); static VOID CloseWorker(PDEVICE_OBJECT DeviceObject, PVOID Context); NTSTATUS Close(); public: VirtualChannel(); virtual ~VirtualChannel(); BOOL Create(HANDLE hIca, ULONG SessionID, ULONG ChannelId, PKEVENT DeletionEvent); NTSTATUS Read(IN PIO_COMPLETION_ROUTINE ReadRoutine OPTIONAL, IN PVOID Context, OUT PVOID Buffer, IN ULONG Length, IN BOOL bWorkerItem); NTSTATUS Write(IN PIO_COMPLETION_ROUTINE WriteRoutine OPTIONAL, IN PVOID Context, OUT PVOID Buffer, IN ULONG Length, IN BOOL bWorkerItem, BOOL LowPrioWrite); NTSTATUS SubmitClose(); };