Koukam, ze tam pouziva structy s bit fieldy, takze jeho struktury maji layout zavisly na prekladaci. Coz mi neprijde zrovna idealni. Napr.
typedef struct {
uint8 left_button: 1;
uint8 right_button: 1;
uint8 middle_button: 1;
uint8 always_1: 1;
uint8 x_sign: 1;
uint8 y_sign: 1;
uint8 x_overflow: 1;
uint8 y_overflow: 1;
} MOUSE_STATUS;
Projekty tohoto typu často musí používat compiler-specific rozšíření C/C++, aby je bylo vůbec možné implementovat, nebo by kód bez nich byl nepřehledný. Takové Linux (kernel) taky používá GNU extensiony (které se ale vyskytují ve více či méně odlišné podobě i jinde). Je čistě na vývojáři, aby se rozhodnul, jak moc chce záviset na konkrétním překladači.
Problém s „bitfieldy“, a i strukturami obecně, je až když je chceme používat jako metodu (de)serializace. Taky mě napadá, že to autor mohl zvolit z důvodu, že se obdobný zápis vyskytuje i v originálních headerech k API. Win32 API moc neznám.
Technicky vzato uz W2k byly slusne pouzitelny. XP tady byla uz spise jen kosmeticka evoluce. Ale od NT4 byl ten skok k W2k fakt velkej. W95 jen pokracovali v tom, co byly Win3.x... defacto jen nadstavba nad MSDOSem (asi proto je to asi i jednodussi emulovat), zatimco i ty XPcka stavi nad tim "NT" kernelem.
Jen nadstavba nad DOSem... Ani ne, služby DOSu a BIOSu se používaly jen jako záložní řešení, když nebyl k dispozici vhodný ovladač zařízení. Přitomnost DOSu byla potřebná pro splnění business požadavků - mít systém co spustí aplikace pro DOS, Win 3.1 a Win95 a zároveň je použitelný na běžném, konzumním hardware ve své době. Platilo se za to menší stabilitou.