Unter Win7-64Bit benutze ich USB-USART Adapter (CP2102 & FT232) um von einem externen Geräten zu lesen.
Softwaretechnisch gibt es keine Probleme und die Adapter tun was sie sollen.
Jedoch tritt dabei eine hohe CPU Last im System Process auf (~3% , 1 Core ist mit ~25% dauernd am rödeln).
Der Port wird mit 9600,8,N,1 no flow control gelesen.
Das Phänomen tritt gleichermassen bei dem eigenen Programm als auch beim lesen über Tera Term auf.
Die Systemlast wird auch nicht durch eigene I/O Aktivitäten verursacht.
Es reicht nach dem CreateFile() [*] den eigenen Prozess mit dem Debugger anzuhalten, der System Prozess rödelt weiter munter vor sich hin solang der Port offen ist.
Ebenso kann man die Rx/Tx Leitungen abziehen so dass auf der USART Seite keinerlei I/O Aktivität auftritt.
Der Process Explorer zeigt dass der System Thread: ntoskrnl.exe!ExQueueWorkItem+0x80 die CPU Last zieht.
https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/wdm/nf-wdm-exqueueworkitem
Da das Phänomen sowohl bei dem CP2102 als auch bei einem FT232 auftritt scheint es eher durch eine gemeinsame Treiberschicht verursacht zu sein.
Tritt das Problem bei euch auch auf?
Oder hat jemand eine Idee wonach man noch weiter suchen könnte?
[*] geöffnet wird mit
CreateFile( com, GENERIC_READ | GENERIC_WRITE, 0, NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED,
NULL );
Gelesen wird in einem eigenen Thread (aber wie gesagt reicht es ja schon CreateFile() aufzurufen um die CPU Last im System Prozess zu erzeugen).



