Geoffrey
2013-09-05 12:14:52 UTC
V současné době obracím ovladač systému Windows, abych mohl napsat ovladač kompatibilní s Linuxem pro kartu DVB, narazil jsem však na malý problém, který mohu obejít, ale pokud je to možné, rád bych to napravil .
Existuje funkce, jejíž část načte 256bajtový konfigurační prostor PCI do místní vyrovnávací paměti, která byla přidělena v zásobníku. Dekompilace ukazuje výstup jako:
nepodepsaný __int16 configSpaceBuffer [128]; .... SNIP ... configSpace->vtable->tmRegisterAccess_ConfigSpace__tmIGetReg (configSpace, &adpace, 0, 4) _this->field_4A = v74; _this->field_4C = * (bez znaménka __int16 *) configSpaceBuffer; _this->field_4E = v75; _this->field_50 = v77; _this->field_52 = v76;
Je možné opravit zjištěné funkční proměnné a místo toho zobrazit následující?
_this->field_4A = configSpaceBuffer [0] ; _this->field_4C = configSpaceBuffer [1]; _this->field_4E = configSpaceBuffer [2]; _this->field_50 = configSpaceBuffer [6]; _this->field_52 = configSpaceBuffer [8];