20 return ((ChannelType >=
VtUtf8) && (ChannelType <=
Raw));
30 &ChannelId->ChannelGuid);
40 if (Channel->HasNewDataEvent)
48 if (Channel->CloseEvent)
56 if (Channel->LockEvent)
64 if (Channel->RedrawEvent)
109 Status = Channel->ChannelOutputFlush(Channel);
140 Status = Channel->ChannelInputRead(Channel,
156 LastChar = Channel->ChannelInputReadLast(Channel);
169 Length = Channel->ChannelInputBufferLength(Channel);
229 *ChannelStatus = Channel->ChannelStatus;
243 Channel->ChannelStatus = ChannelStatus;
287 IsClosed = ((ChannelStatus ==
Inactive) &&
288 (Channel->ChannelHasNewOBufferData));
396 *ApplicationType = Channel->ApplicationType;
408 switch (Channel->ChannelType)
507 Channel->ChannelId = ChannelId;
508 Channel->ChannelType =
Attributes->ChannelType;
512 Channel->ApplicationType =
Attributes->ChannelId;
538 Status = Channel->ChannelCreate(Channel);
552 Channel->ChannelDestroy(Channel);
NTSTATUS NTAPI ChannelClose(IN PSAC_CHANNEL Channel)
BOOLEAN NTAPI ChannelIsClosed(IN PSAC_CHANNEL Channel)
ULONG NTAPI ChannelIBufferLength(IN PSAC_CHANNEL Channel)
NTSTATUS NTAPI ChannelSetLockEvent(IN PSAC_CHANNEL Channel)
NTSTATUS NTAPI ChannelGetName(IN PSAC_CHANNEL Channel, OUT PWCHAR *Name)
NTSTATUS NTAPI ChannelSetName(IN PSAC_CHANNEL Channel, IN PWCHAR Name)
NTSTATUS NTAPI ChannelIRead(IN PSAC_CHANNEL Channel, IN PCHAR Buffer, IN ULONG BufferSize, IN OUT PULONG ResultBufferSize)
BOOLEAN NTAPI ChannelIsValidType(IN SAC_CHANNEL_TYPE ChannelType)
NTSTATUS NTAPI ChannelSetDescription(IN PSAC_CHANNEL Channel, IN PWCHAR Description)
NTSTATUS NTAPI ChannelIWrite(IN PSAC_CHANNEL Channel, IN PCHAR Buffer, IN ULONG BufferSize)
NTSTATUS NTAPI ChannelDestroy(IN PSAC_CHANNEL Channel)
NTSTATUS NTAPI ChannelGetDescription(IN PSAC_CHANNEL Channel, IN PWCHAR *Description)
NTSTATUS NTAPI ChannelGetStatus(IN PSAC_CHANNEL Channel, OUT PSAC_CHANNEL_STATUS ChannelStatus)
NTSTATUS NTAPI ChannelOFlush(IN PSAC_CHANNEL Channel)
BOOLEAN NTAPI ChannelIsEqual(IN PSAC_CHANNEL Channel, IN PSAC_CHANNEL_ID ChannelId)
NTSTATUS NTAPI ChannelDereferenceHandles(IN PSAC_CHANNEL Channel)
NTSTATUS NTAPI ChannelCreate(IN PSAC_CHANNEL Channel, IN PSAC_CHANNEL_ATTRIBUTES Attributes, IN SAC_CHANNEL_ID ChannelId)
NTSTATUS NTAPI ChannelHasRedrawEvent(IN PSAC_CHANNEL Channel, OUT PBOOLEAN Present)
NTSTATUS NTAPI ChannelGetApplicationType(IN PSAC_CHANNEL Channel, OUT PGUID ApplicationType)
NTSTATUS NTAPI ChannelClearRedrawEvent(IN PSAC_CHANNEL Channel)
NTSTATUS NTAPI ChannelOWrite(IN PSAC_CHANNEL Channel, IN PCHAR Buffer, IN ULONG BufferSize)
WCHAR NTAPI ChannelIReadLast(IN PSAC_CHANNEL Channel)
NTSTATUS NTAPI ChannelSetStatus(IN PSAC_CHANNEL Channel, IN SAC_CHANNEL_STATUS ChannelStatus)
BOOLEAN NTAPI ChannelIsActive(IN PSAC_CHANNEL Channel)
NTSTATUS NTAPI ChannelInitializeVTable(IN PSAC_CHANNEL Channel)
NTSTATUS NTAPI ChannelSetRedrawEvent(IN PSAC_CHANNEL Channel)
#define STATUS_NOT_IMPLEMENTED
#define NT_SUCCESS(StatCode)
static const WCHAR Description[]
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
_In_ ULONG _In_ ULONG _In_ ULONG Length
ULONG NTAPI RawChannelIBufferLength(IN PSAC_CHANNEL Channel)
NTSTATUS NTAPI RawChannelIRead(IN PSAC_CHANNEL Channel, IN PCHAR Buffer, IN ULONG BufferSize, IN PULONG ReturnBufferSize)
NTSTATUS NTAPI RawChannelOWrite(IN PSAC_CHANNEL Channel, IN PCHAR String, IN ULONG Length)
NTSTATUS NTAPI RawChannelDestroy(IN PSAC_CHANNEL Channel)
NTSTATUS NTAPI RawChannelOEcho(IN PSAC_CHANNEL Channel, IN PCHAR String, IN ULONG Length)
WCHAR NTAPI RawChannelIReadLast(IN PSAC_CHANNEL Channel)
NTSTATUS NTAPI RawChannelCreate(IN PSAC_CHANNEL Channel)
NTSTATUS NTAPI RawChannelIWrite(IN PSAC_CHANNEL Channel, IN PCHAR Buffer, IN ULONG BufferSize)
NTSTATUS NTAPI RawChannelIBufferIsFull(IN PSAC_CHANNEL Channel, OUT PBOOLEAN BufferStatus)
NTSTATUS NTAPI RawChannelORead(IN PSAC_CHANNEL Channel, IN PCHAR Buffer, IN ULONG BufferSize, OUT PULONG ByteCount)
NTSTATUS NTAPI RawChannelOFlush(IN PSAC_CHANNEL Channel)
#define SAC_CHANNEL_DESCRIPTION_SIZE
NTSTATUS NTAPI VTUTF8ChannelOEcho(IN PSAC_CHANNEL Channel, IN PCHAR String, IN ULONG Length)
#define ChannelLockOBuffer(x)
#define CHECK_PARAMETER2(x)
NTSTATUS NTAPI VTUTF8ChannelOFlush(IN PSAC_CHANNEL Channel)
#define SacAllocatePool(Length, Tag)
#define SAC_CHANNEL_FLAG_LOCK_EVENT
#define SAC_CHANNEL_FLAG_REDRAW_EVENT
enum _SAC_CHANNEL_STATUS * PSAC_CHANNEL_STATUS
#define CHECK_PARAMETER3(x)
#define CHECK_PARAMETER1(x)
#define SAC_CHANNEL_FLAG_CLOSE_EVENT
FORCEINLINE VOID SacInitializeLock(IN PSAC_CHANNEL_LOCK Lock)
#define CHECK_ALLOCATION(x)
NTSTATUS NTAPI VTUTF8ChannelIWrite(IN PSAC_CHANNEL Channel, IN PCHAR Buffer, IN ULONG BufferSize)
#define ChannelSetEvent(Channel, x)
NTSTATUS NTAPI VTUTF8ChannelORead(IN PSAC_CHANNEL Channel, IN PCHAR Buffer, IN ULONG BufferSize, OUT PULONG ByteCount)
#define ChannelLockAttributes(x)
#define ChannelClearEvent(Channel, x)
enum _SAC_CHANNEL_TYPE SAC_CHANNEL_TYPE
#define SAC_CHANNEL_NAME_SIZE
NTSTATUS NTAPI VTUTF8ChannelCreate(IN PSAC_CHANNEL Channel)
#define ChannelLockIBuffer(x)
#define ChannelUnlockAttributes(x)
NTSTATUS NTAPI VTUTF8ChannelIBufferIsFull(IN PSAC_CHANNEL Channel, OUT PBOOLEAN BufferStatus)
ULONG NTAPI VTUTF8ChannelIBufferLength(IN PSAC_CHANNEL Channel)
#define CHECK_PARAMETER(x)
enum _SAC_CHANNEL_STATUS SAC_CHANNEL_STATUS
NTSTATUS NTAPI VTUTF8ChannelOWrite(IN PSAC_CHANNEL Channel, IN PCHAR String, IN ULONG Length)
NTSTATUS NTAPI VTUTF8ChannelIRead(IN PSAC_CHANNEL Channel, IN PCHAR Buffer, IN ULONG BufferSize, IN PULONG ReturnBufferSize)
#define SAC_CHANNEL_FLAG_HAS_NEW_DATA_EVENT
#define ChannelUninitializeEvent(Channel, x, f)
#define ChannelUnlockIBuffer(x)
WCHAR NTAPI VTUTF8ChannelIReadLast(IN PSAC_CHANNEL Channel)
#define ChannelUnlockOBuffer(x)
#define ChannelInitializeEvent(Channel, Attributes, x)
#define SAC_CHANNEL_FLAG_APPLICATION
NTSTATUS NTAPI VTUTF8ChannelDestroy(IN PSAC_CHANNEL Channel)
_CRTIMP wchar_t *__cdecl wcsncpy(wchar_t *_Dest, const wchar_t *_Source, size_t _Count)
#define RtlZeroMemory(Destination, Length)
#define STATUS_INVALID_PARAMETER
_Must_inspect_result_ _In_ WDFDMAENABLER _In_ _In_opt_ PWDF_OBJECT_ATTRIBUTES Attributes
_In_ WDFMEMORY _Out_opt_ size_t * BufferSize
#define IsEqualGUIDAligned(guid1, guid2)
_In_ ULONG _In_ BOOLEAN Active