NTSTATUS NTAPI VTUTF8ChannelOWrite(IN PSAC_CHANNEL Channel, IN PCHAR String, IN ULONG Length) { NTSTATUS Status; CHECK_PARAMETER1(Channel); CHECK_PARAMETER2(String); /* Call the lower level function */ Status = VTUTF8ChannelOWrite2(Channel, (PWCHAR)String, Length / sizeof(WCHAR)); if (NT_SUCCESS(Status)) { /* Is the channel enabled for output? */ if ((ConMgrIsWriteEnabled(Channel)) && (Channel->WriteEnabled)) { /* Go ahead and output it */ Status = VTUTF8ChannelOEcho(Channel, String, Length); } else { /* Otherwise, just remember that we have new data */ _InterlockedExchange(&Channel->ChannelHasNewOBufferData, 1); } } /* We're done */ return Status; }
NTSTATUS NTAPI RawChannelOWrite(IN PSAC_CHANNEL Channel, IN PCHAR String, IN ULONG Length) { CHECK_PARAMETER1(Channel); CHECK_PARAMETER2(String); if ((ConMgrIsWriteEnabled(Channel)) && (Channel->WriteEnabled)) { return RawChannelOEcho(Channel, String, Length); } return RawChannelOWrite2(Channel, String, Length); }
NTSTATUS NTAPI ConMgrChannelClose(IN PSAC_CHANNEL Channel) { NTSTATUS Status = STATUS_SUCCESS; /* Check if we're in the right channel */ if (ConMgrIsWriteEnabled(Channel)) { /* Yep, reset it */ Status = ConMgrResetCurrentChannel(FALSE); ASSERT(NT_SUCCESS(Status)); } /* All done */ return Status; }