• In einem PC steckt eine PCIe x1-Karte, die einen ECP-Parallelport bereit stellt, in einem anderen PC eine PCI-Karte, die zwei ECP-Parallelports bereit stellt. In beiden PCs gibt es keine nativen Parallelports auf den Hauptplatinen. Soweit funktioniert auch alles. Sowohl Windows 7 pro SP1 64-Bit als auch Slackware64 14.1 mit Kernel 3.17.4 erkennen die Parallelports, angeschlossene Drucker funktionieren daran. Während Linux die Karten als interne Geräte behandelt (werden von lspci angezeigt), meint Windows jedoch, dass es sich dabei um "removable devices" handelt und bietet daher das "Auswerfen" für "Microsoft Rawport" an. Das ist sehr lästig! Es mag ja sein, dass auf den Karten Chips zum Einsatz kommen, die auch in USB-Parallelport-Adaptern zum Einsatz kommen. Dennoch möchte ich diese Karten nicht "Auswerfen" können.

    Gibt es eine Möglichkeit Windows z. B. über einen Eintrag in der registry beizubringen, dass diese Karten keine "removable devices" sind und deshalb auch kein "Auswerfen" dafür angeboten werden soll?

  • Ich mein in der Registry da mal was gesehen zu haben.. allerdings wirst du unter einer umfangreichen Suche bei Google nicht drum rum kommen +- paar Stunden mit Registrysuche verbringen, zu Komplex ist der Kram einfach.

  • Leider kann man nichts dagegen tun, wenn sich PCIe-Karten wider Erwartung als hotswapfähig melden. Sicherlich wäre das auch unter Linux der Fall (vergleiche deine dmesg-Angabe), nur müsste man für funktionierendes PCIe-Hotswap da in der Regel noch Hand anlegen.

    Was Blue meint: Für den Standard-MS-Treiber msahci kann man per Registry-Zweig bestimmte SATA-Ports als intern markieren, da standardmäßig alle als auswerfbar angesehen werden, wenn der SATA-Controller darüber keine Angaben macht.


    EDIT: Man kann evtl. mit dem Registry-Zweig HKLM\SYSTEM\CurrentControlSet\services\pci\Parameters herumspielen, der für ein bestimmtes PCI-Gerät (z. B. Schlüssel "80863500" für Vendor-ID 0x8086 und Device-ID 0x3500) ein 64 Bit großes Bitfeld mit Parametern erlaubt. Allerdings habe ich noch keine Dokumentation dafür gefunden. Gegebenfalls wäre ein Blick in die INF-Datei für einen Treiber dieser Hardware, ggf. für ein älteres Windows, sinnvoll.

    EDIT 2: Nach dem Quellcode von ReactOS (der aus Quellen von Microsoft stammt) gibt es ein Bit namens PCI_HACK_NEVER_DISCONNECT PCI_HACK_DISABLE_HOT_PLUG, das versprechend klingt. Dafür müsste man einen Wert der Form

    Code
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\pci\Parameters]
    "CAFEBABE"=hex:00,00,08,00,00,00,00,00


    setzen.

    EDIT 3: Dieser Hack ist in der Tat in freier Wildbahn für ein paar Geräte zu finden, wenn man nach dem Registry-Schlüssel in Verbindung mit "hex:00,00,08,00,00,00,00,00" sucht.


  • Sicherlich wäre das auch unter Linux der Fall (vergleiche deine dmesg-Angabe), nur müsste man für funktionierendes PCIe-Hotswap da in der Regel noch Hand anlegen.

    Da ich für auf Festplatten installierten Linuxe grundsätzlich keine Distro-Kernel verwende, sondern die jeweils zur Hardware passend selbst backe, lege ich da zwangläufig Hand an und schmeiß das hotplug-Geraffel für PCI & PCIe mangels dazu passender Hardware raus.

    Code
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\pci\Parameters]
    "CAFEBABE"=hex:00,00,08,00,00,00,00,00


    setzen.

    Bei

    Code
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\pci

    ist Schluss. \Parameters gibt es nicht.
    Und wie bekomme ich nach dem Anlegen eines Schlüssels "Parameters" dann die Zeichenfolge

    Code
    "CAFEBABE"=hex:00,00,08,00,00,00,00,00

    (CAFEBABE durch Vendor-iD/Device-ID ersetzt) eingetragen?


  • Und wie bekomme ich nach dem Anlegen eines Schlüssels "Parameters" dann die Zeichenfolge

    Code
    "CAFEBABE"=hex:00,00,08,00,00,00,00,00

    (CAFEBABE durch Vendor-iD/Device-ID ersetzt) eingetragen?

    Der Wert ist aus historischen Gründen kein 64-Bit-Integer (REG_QWORD), sondern ein „Binärwert“ (REG_BINARY). Der Registrierungs-Editor nimmt die Daten genauso hexadezimal entgegen, wie sie da stehen.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!