23 if (
Irp->PendingReturned)
42 TRACE_(SERIAL,
"Calling lower device %p\n", LowerDevice);
90 INFO_(SERIAL,
"Byte received on COM%lu: 0x%02x\n",
131 INFO_(SERIAL,
"Byte sent to COM%lu: 0x%02x\n",
183 TRACE_(SERIAL,
"SR_IIR_MSR_CHANGE\n");
224 TRACE_(SERIAL,
"SR_IIR_THR_EMPTY\n");
235 TRACE_(SERIAL,
"SR_IIR_DATA_RECEIVED\n");
244 if (AlreadyReceivedBytes < Limit && AlreadyReceivedBytes + 1 >=
Limit)
256 TRACE_(SERIAL,
"SR_IIR_ERROR\n");
static IO_COMPLETION_ROUTINE ForwardIrpAndWaitCompletion
_Must_inspect_result_ typedef _In_ PVOID Unused
CIRCULAR_BUFFER OutputBuffer
_Must_inspect_result_ _In_ PWDF_DPC_CONFIG _In_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFDPC * Dpc
#define STATUS_MORE_PROCESSING_REQUIRED
#define READ_PORT_UCHAR(p)
struct _DEVICE_OBJECT * PDEVICE_OBJECT
#define SR_IER_MSR_CHANGE
ULONG BufferOverrunErrorCount
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_INTERRUPT_CONFIG _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFINTERRUPT * Interrupt
VOID NTAPI SerialCompleteIrp(IN PKDPC Dpc, IN PVOID pDeviceExtension, IN PVOID pIrp, IN PVOID Unused)
BOOLEAN NTAPI KeInsertQueueDpc(IN PKDPC Dpc, IN PVOID SystemArgument1, IN PVOID SystemArgument2)
ULONG GetNumberOfElementsInCircularBuffer(IN PCIRCULAR_BUFFER pBuffer)
#define SR_MSR_DCD_CHANGED
KSPIN_LOCK InputBufferLock
LONG NTAPI KeSetEvent(IN PKEVENT Event, IN KPRIORITY Increment, IN BOOLEAN Wait)
NTSTATUS NTAPI KeWaitForSingleObject(IN PVOID Object, IN KWAIT_REASON WaitReason, IN KPROCESSOR_MODE WaitMode, IN BOOLEAN Alertable, IN PLARGE_INTEGER Timeout OPTIONAL)
#define SERIAL_EV_TXEMPTY
#define SERIAL_EV_RX80FULL
#define IoSetCompletionRoutine(_Irp, _CompletionRoutine, _Context, _InvokeOnSuccess, _InvokeOnError, _InvokeOnCancel)
KEVENT InputBufferNotEmpty
FORCEINLINE VOID IoCopyCurrentIrpStackLocationToNext(_Inout_ PIRP Irp)
#define SR_LSR_DATA_RECEIVED
_In_ PDEVICE_OBJECT DeviceObject
KSPIN_LOCK OutputBufferLock
#define SR_MSR_DSR_CHANGED
#define SR_MSR_RI_CHANGED
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
#define SR_IER_DATA_RECEIVED
#define SR_LSR_PARITY_ERROR
SERIALPERF_STATS SerialPerfStats
BOOLEAN IsCircularBufferEmpty(IN PCIRCULAR_BUFFER pBuffer)
_In_ PVOID _In_ ULONG Event
#define SR_MSR_CTS_CHANGED
#define IoCompleteRequest
ULONG SerialOverrunErrorCount
ULONG BreakInterruptErrorCount
#define SR_LSR_OVERRUN_ERROR
#define NT_SUCCESS(StatCode)
#define KeAcquireSpinLock(sl, irql)
NTSTATUS PushCircularBufferEntry(IN PCIRCULAR_BUFFER pBuffer, IN UCHAR Entry)
_In_ PKSERVICE_ROUTINE _In_opt_ PVOID ServiceContext
#define SR_LSR_FRAMING_ERROR
VOID NTAPI SerialReceiveByte(IN PKDPC Dpc, IN PVOID pDeviceExtension, IN PVOID Unused1, IN PVOID Unused2)
#define WRITE_PORT_UCHAR(p, d)
BOOLEAN NTAPI SerialInterruptService(IN PKINTERRUPT Interrupt, IN OUT PVOID ServiceContext)
#define SR_IIR_MSR_CHANGE
#define SR_IIR_DATA_RECEIVED
NTSTATUS PopCircularBufferEntry(IN PCIRCULAR_BUFFER pBuffer, OUT PUCHAR Entry)
#define KeInitializeEvent(pEvt, foo, foo2)
#define InterlockedIncrement
struct _SERIAL_DEVICE_EXTENSION * PSERIAL_DEVICE_EXTENSION
NTSTATUS NTAPI IoCallDriver(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
#define KeReleaseSpinLock(sl, irql)
#define IoSkipCurrentIrpStackLocation(Irp)
VOID NTAPI SerialSendByte(IN PKDPC Dpc, IN PVOID pDeviceExtension, IN PVOID Unused1, IN PVOID Unused2)
CIRCULAR_BUFFER InputBuffer
_In_ LONG _In_ LONG Limit