Originální driver Windows USB CDC ACM (usbser.sys) je tak stabilní, že vložením zařízení, které implementuje více než jeden port, dojde podle reportů mých kolegů, kteří Windows na rozdíl ode mne používají, vždy k okamžitému pádu Windows do BSOD (testováno na více verzích a počítačích). Pod Linuxem se pro náš RF serial správně vytvoří čtyři /dev/ttyACM a vše pěkně chodí. Je pravda, že se asi kolegům nepodařilo zjistit jak vytvořit správný inf pro multiport a také je pravda, že Windows ACM serial class zařízení bez infu od výrobce nepoznají. Takže teoreticky je to náš problém. Ale stačí nám zkompilovat USB zařízení se stejným deskriptorem, ve kterém změníme VID:PID na některý, který je v defaultním infu od Microsoftu a pak jen zasunutím USB donglíku velikosti klíčenky libovolné Windows shodíme. Je dost možné, že je kód driveru tak špatný, že by chyba šla využít i k spuštění arbitrary kódu v jádře. K tomu je většinou od špatné pointerové aritmentiky jen kousek.
Takže na drogách je nespíš pár/většina vývojářů Microsoftu. Nebo spíš ne na drogách, ale v kódu se ztrácejí.
Například najít někde informaci o tom, za jakých podmínek v URB transfer completion dostane driver chybu přenosu, která je ve skutečnosti způsobena nejspíš jen nějakým dočasným nedostatkem resources nebo chybou způsobenou zarušením, se mi v dokumentaci MS nepovedlo. Na Linuxu je chování USB řadiče/HW podobné, ale je to jasně popsané. U Windows se musí hledat útržky informací a druhořadých zdrojáků, které MS uvolní jako template v DDK. Přitom jsou to většinou zastaralé verze z doby, kdy daný subsystém navrhovali a aktuální požadavky nesplňuje.
Několik věcí na USB driveru k našemu vlastnímu zařízení se nám podařilo odladit právě díky ReactOSu, který na rozdíl od Windows problémy reportoval a umožňuje díky dostupnosti zdrojáků pochopit, co se v jádře děje, včetně principiální omezenosti některých služeb WinAPI, pro kterou poté, co si jí člověk načte ze zdrojáků ReactOSu, nakonec najde i potvrzení v MSDN. Ale tam je taková limitace schovaná někde pěkně pod čarou a až když víte co hledat, tak jí lze najít.
Je velmi smutné, že multimiliardová firma není schopná platformu pořádně udržovat a dokumentovat a zachraňují ji nadšenci, kterým bude MS nejspíš ještě více v budoucnu házet klacky pod nohy (a především právníky do cesty). Třeba až se jim po letech podaří udělat systém stabilnější a použitelnější a především mnohem méně nakynutý, než má MS.