@andreas_55
Jein.
Deine Umwandlung ist korrekt. Die PCI Register sind als 32 bit Worte organisiert.
Das Wort, das die Klasse enthält, wird bei diesem Chip als 0x000C0330 gelesen. Allerdings bezeichnen nur die unter 24 Bit also 0C0330 die Klasse. Die obersten 8 Bit, die 00, stammt aus von einem anderen Feld, einer Revision ID und werden ausgeundet, haben also nichts mit der 00 am Endes des IPClassMatches zu tun.
Der IOClassCode ist auch ein 32 Bit Wert. Organisatorisch ist die 0C die höchste Hierarchiestufe, da geht nix drüber. Sie gehört also im Verständnis des "westlichen" Raums ganz nach links. Da wir aber nur 24 Bit haben, bleiben am rechten Rand 8 Bit übrig und die füllt man wie sooft wenn man nicht weiß was man tun soll oder was da kommen wird mit Nullen. Nebenbei gibt es einem noch die Möglichkeit ggf. eine weitere Hierarchiestufe einzubauen.
IOClassMatch = (Register & 0x00FFFFFF) << 8.
@Doctor Plagiat
Du hast ein Z170 Board und dessen Controller ist der mit der Id 0xa12f8086. Den verwendet Apple auch und deshalb ist er in der AppleUSBXHCIPCI mit einem eigenen Treiber nämlich AppleUSBXHCISPT vertreten. das ist also ok und sollte funktionieren.
Wenn die 14+1 Ports angezeigt werden greift die erste (in meinem Kext) Personality nicht.
Lade doch mal deine Info.plist hoch.
Zusätzlich brauchen wir noch, den SMBIOS Namen, den dein Rechner verwendet und wie das XHCI Gerät heisst. Das ist der Name des Devices über den Ports in IORegistryExplorer. Bei meinem Beispiel XHC.