Windows ConfidentialEin zweischneidiges Schwert

Raymond Chens

Wenn Sie eine CD oder DVD einlegen, überprüft die Shell den Datenträger, um zu ermitteln, welche Art von Inhalten sich darauf befindet. Anhand dieser Information kann die Shell dann entscheiden, welche Aktion zur automatischen Wiedergabe ausgeführt werden muss. Die genauen Details dazu, wie diese Überprüfung („Sniffing“) erfolgt, sind nicht dokumentiert, da es sich hierbei um heuristische Methoden handelt, die sich in der Zukunft ändern können, wenn ein besserer Algorithmus gefunden wird.

Durch eine Dokumentation des Algorithmus würde dieser vertraglich festgelegt, wodurch verhindert würde, dass der Algorithmus in späteren Versionen optimiert werden kann. Offiziell werden daher die Details des Algorithmus nicht angegeben.

Wenn Sie noch nie eine Dokumentation für ein SDK geschrieben haben, wissen Sie vielleicht nicht, dass die Dokumentation zu einer vertraglichen Bindung führt. Sobald Sie schriftlich niederlegen, dass sich etwas auf eine bestimmte Weise verhält, können Sie es nicht mehr ändern. Andernfalls sagen die Leute, die sich auf dieses Verhalten verlassen haben: „Das steht aber nicht in der Dokumentation. Sie ändern die Regeln, nachdem das Spiel bereits begonnen hat.“

Nachdem ich diese Warnung ausgesprochen habe, soll an dieser Stelle ein schnelle, unglaublich stark vereinfachte Beschreibung der Methode folgen, mit der Windows® XP Service Pack 2 (SP2) den Inhalt von Daten-CDs und Daten-DVDs kategorisiert, auf denen die Datei „autorun.inf“ fehlt. (Zukünftige Service Packs und Windows-Versionen könnten sich anders verhalten.) Ich sage „unglaublich stark vereinfacht“, weil der eigentliche Algorithmus eine 61 Schritte umfassende Entscheidungstabelle ist, die alle Arten von Informationen berücksichtigt, z. B. ob die Vordergrundanwendung auf die Benachrichtigung „Query cancel autoplay“ reagiert hat, ob ein Programm im Vollbildmodus ausgeführt wird und sogar ob es sich bei dem Computer um einen Laptop handelt, der vor kurzem an- oder abgedockt wurde. Ich werde jedoch nur auf den Schritt der Inhaltsermittlung eingehen.

  

Zuerst prüft die Shell, ob der Benutzer „Keine Aktion durchführen“ als Aktion für alle Inhaltstypen festgelegt hat. Wenn dies der Fall ist, hat das Sniffing keinen Sinn. Die Entscheidung lautet einfach „Keine Aktion durchführen“.

Andernfalls hat die Shell etwas zu tun. Sie prüft jede Datei auf dem Datenträger – auf bis zu vier Verzeichnisebenen – und teilt sie auf Basis des erkannten Typs in eine der folgenden Kategorien ein: Bild, Musik, Film.

Dateien, die in keine dieser Kategorien passen, werden ignoriert. Wenn alle geprüften Dateien zu nur einer Kategorie gehören (wenn beispielsweise alle Dateien auf dem Datenträger Musikdateien sind), wird dadurch der Typ des Datenträgers bestimmt. Wenn mehr als eine der drei Kategorien vertreten ist, wird festgestellt, dass der Datenträger gemischten Inhalt enthält.

Dies bedeutet, dass Nichtmusikdateien auf einer Musik-CD dazu führen, dass die CD von Windows XP SP2 als Datenträger mit gemischtem Inhalt behandelt wird. Dies ist eines der Dinge, die wahrscheinlich optimiert werden sollten. Angenommen, dieser Algorithmus würde jedoch optimiert und wir würden entscheiden, dass vereinzelte Bilder auf einer CD mit MP3-Dateien nicht den Ausschlag dafür geben sollten, dass von gemischtem Inhalt ausgegangen wird. Ein Unternehmen verfügt möglicherweise über eine CD mit vielen Audiodateien und nur wenigen Bildern. Das Unternehmen verlässt sich in der Tat darauf, dass die CD als Datenträger mit gemischtem Inhalt erkannt wird. Wird der Algorithmus jedoch geändert, wird die CD fälschlicherweise als Musik-CD kategorisiert. Das Unternehmen ist darüber natürlich nicht glücklich. Wer trägt jedoch die Schuld an diesem Problem? Kann dem Unternehmen vorgeworfen werden, dass es sich auf die Details des Sniffingalgorithmus verlassen hat? Oder sollte Windows die Schuld gegeben werden, weil es für die Änderung des Algorithmus verantwortlich ist?

Siehe da, in Windows Vista™ wurde der Algorithmus geändert – wenn auch nur geringfügig. In Windows Vista werden im Voraus mehrere Prüfungen durchgeführt, um den Algorithmus für bestimmte bekannte Datenträgerlayouts kurzzuschließen. Wenn z. B. ein DCIM-Ordner im Stammverzeichnis des Datenträgers vorhanden ist, wird angenommen, dass er aus digitalen Bildern besteht. Jetzt warten wir ab, ob es irgendjemand merkt.

Raymond Chens Website, The Old New Thing, und sein gleichnamiges Buch (Addison-Wesley, 2007) beschäftigen sich mit der Windows-Geschichte und der Win32-Programmierung. Raymond Chen fragt sich, wie die Sonne aussieht.

© 2008 Microsoft Corporation und CMP Media, LLC. Alle Rechte vorbehalten. Die nicht genehmigte teilweise oder vollständige Vervielfältigung ist nicht zulässig.