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.
62 lines
1.8 KiB
62 lines
1.8 KiB
/*++
|
|
|
|
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();
|
|
};
|
|
|