Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Der Windows Media Device Manager ermöglicht es einer Anwendung oder einem Plug-In, mit einem Gerät zu kommunizieren. Anwendungen können Gerätemetadaten anfordern, angefügte Geräte auflisten und untersuchen und Objekte senden oder empfangen (Ordner, Dateien, Wiedergabelisten usw.). Windows Media Device Manager stellt eine einzelne API für die aufrufende Anwendung bereit, unabhängig davon, welcher Gerätetyp aufgerufen wird (MTP oder Massenspeicherklasse, Dienstanbieter, die auf Version 10 oder Dienstanbietern basieren, die auf früheren Versionen von Windows Media Device Manager basieren).
Windows Media Device Manager fungiert als Go-Between für die drei Hauptkomponenten des Systems: die Anwendung, die Anforderungen anfordert (für Informationen, zum Lesen oder Schreiben von Daten usw.); ein sicherer Inhaltsanbieter, der eine Komponente ist, die die Kommunikation mit DRM-geschützten Dateien verarbeitet; und ein Dienstanbieter, der Anforderungen von der Anwendung empfängt und mit dem Gerät kommuniziert, um diese Anforderungen auszuführen. Sowohl die Anwendung als auch der Dienstanbieter basieren auf dem Windows Media Device Manager SDK.
Das folgende Diagramm zeigt, wie eine Desktopanwendung mit einem Gerät mit Windows Media Device Manager 11 kommuniziert.
Das vorangehende Diagramm zeigt eine Anwendung, die mit vier verschiedenen Gerätetypen kommuniziert, jeweils mit einem eigenen Dienstanbieter. Jeder Dienstanbieter ist darauf ausgelegt, mit einem bestimmten Gerätetyp zu kommunizieren; Dieses Diagramm zeigt die drei von Microsoft bereitgestellten Dienstanbieter (generische Klassentreiber für Massenspeicherklassengeräte, RAPI-Geräte und MTP-Geräte) sowie einen benutzerdefinierten Dienstanbieter für ein proprietäres Gerät, das von einem Drittanbieter erstellt wurde. Wenn ein Gerät eine Verbindung herstellt, instanziiert Windows Media Device Manager eine Instanz des Dienstanbieters, der für dieses Gerät registriert ist. Die Dienstanbieter erhalten Anforderungen von der Anwendung über Windows Media Device Manager-Schnittstellen, die sie implementieren, verwenden geeignete Treiber, um mit dem Gerät zu kommunizieren und entsprechende Ergebnisse zurückzugeben. Die Kommunikation zwischen dem Dienstanbieter und dem Gerät liegt außerhalb der Domäne von Windows Media Device Manager.
Dienstleister sind für die Anwendung unsichtbar; eine Anwendung sieht nur eine Liste der "Geräte", da der Windows Media Device Manager einen Standardsatz von Methoden und Schnittstellen für alle Geräte verfügbar macht. Wenn ein Hersteller einen benutzerdefinierten Dienstanbieter erstellt, muss er alle standardmäßigen Windows Media Device Manager-Methoden verarbeiten, wenn Anwendungen das Gerät verwenden können.
Dieses Diagramm zeigt auch ein SCP-Modul (Secure Content Provider). Dieses Modul ist für die Verarbeitung von drM-geschützten Inhalten (Digital Rights Management, Verwaltung digitaler Rechte) verantwortlich. Microsoft stellt ein SCP-Modul bereit, das DRM-geschützte WMA- und WMV-Dateien verarbeiten kann. Wenn eine Anwendung oder ein Gerät andere geschützte Formate verarbeiten möchte, muss es ein eigenes SCP-Modul bereitstellen. Weder die Anwendung noch der Dienstanbieter befasst sich direkt mit dem SCP.
Sowohl die Anwendung als auch der Dienstanbieter basieren auf dem Windows Media Device Manager, der Aufrufe zwischen der Anwendung und dem entsprechenden Dienstanbieter für ein Gerät leitet; Der Dienstanbieter ist für die direkte Kommunikation mit dem Gerät verantwortlich. Der Windows Media Device Manager führt einige Aktionen selbst aus (z. B. das Aufzählen verbundener Geräte, das Weiterleiten von Anrufen und die Verarbeitung der Komponentenüberprüfung); Der Großteil der Arbeit erfolgt jedoch vom Dienstanbieter, der Anforderungen von der Anwendung empfängt und mit dem Gerät kommuniziert.
Eine auf Windows Media Device Manager basierende Anwendung kann mit Geräten und Dienstanbietern kommunizieren, die auf früheren Versionen von Windows Media Device Manager basieren; Diese älteren Geräte werden jedoch über 9 Serienkomponenten (nicht angezeigt) ausgeführt und unterstützen nicht die neuesten Features, insbesondere die fortschrittlichere Technologie für die Verwaltung digitaler Rechte.
Architektur eines Geräts
Das folgende Diagramm zeigt eine vereinfachte Hierarchie von Geräten und Speichern, wie von einer Anwendung mit Dem Windows Media Device Manager gesehen.
Das vorherige Diagramm zeigt eine vereinfachte Version eines verbundenen Flashlaufwerks, wie von einer Windows Media Device Manager-Anwendung gesehen. Das Flashlaufwerk verfügt über Attribute und Eigenschaften, z. B. eine Seriennummer und unterstützte Formatkonfigurationen. Ein unmittelbares untergeordnetes Element des Flashgeräts ist das Stammspeicherobjekt, das einen Ordner enthält, der selbst ein Bild und einen Song enthält.
Eine Anwendung listet die Liste der angefügten Geräte auf, indem eine Enumerationsmethode aufgerufen wird, die vom Stamm-IWMDeviceManager Schnittstelle verfügbar gemacht wird. Geräte werden durch eine IWMDMDevice- (oder eine abgeleitete) Schnittstelle dargestellt. Diese Schnittstelle macht Methoden zum Abrufen des Gerätenamens, der Formatfunktionen, der Seriennummer usw. sowie einer Methode verfügbar, die Speicher auf dem Gerät aufzählt. In Windows Media Device Manager ist ein Speicher eine beliebige Art von Objekt auf dem Gerät, unabhängig davon, ob es sich um ein tatsächliches Blob mit Daten handelt. Beispiel: Audiodateien, Textdateien, Ordner, Wiedergabelisten, die als Dateien gespeichert sind, und Wiedergabelisten, die als Metadaten gespeichert sind, gelten als Speicher, auch wenn Ordner und Metadatenelemente wahrscheinlich keine physische Datei darstellen. Der Typ (oder das Format) eines Speichers kann abgerufen werden, indem GetAttributes aufgerufen werden (oder GetMetadata-, das das Format des Speichers anfordert).
Speicher auf einem Gerät werden hierarchisch gespeichert, und alle Geräte verfügen über einen Stammspeicher. Jeder Speicher kann null oder mehr untergeordnete Objekte enthalten, aufgezählt durch Aufrufen der IWMDMStorage::EnumStorage-Methode dieses Speichers.
Beachten Sie, dass jeder Speicher im Diagramm Attribute und Metadaten zugeordnet ist (nicht alle Werte werden angezeigt). Attribute sind einfache, boolesche Informationen, die häufig Verwaltungs- oder Navigationsinformationen beschreiben (z. B. "hat Ordner" oder "kann löschen"), während Metadaten Zeichenfolgenwerte, Zahlen oder komplexe Informationen (z. B. Renderingfunktionen) sein können. Attribute werden durch einen relativ begrenzten Satz von Flags beschrieben, die vom SDK definiert und durch Aufrufen von IWMDMStorage::GetAttributes oder IWMDMStorage2::GetAttributes2abgerufen werden. Metadatenwerte werden durch einen eindeutigen Namen abgerufen; Das SDK definiert eine Reihe von Metadatenwerten, die Geräte unterstützen sollen, aber Geräte können ihre eigenen Metadatenkonstantendefinieren. Wenn ein Gerät oder Dienstanbieter jedoch eine neue Metadatenkonstante definiert, können Anwendungen diesen Wert nur anfordern oder festlegen, wenn die Anwendungsentwickler diese neue Konstante kennen. Ein Dienstanbieter muss IWMDMStorage3- oder höher unterstützen, um das Abrufen oder Festlegen von Metadaten zu unterstützen. Weitere Informationen finden Sie unter Abrufen und Festlegen von Metadaten und Attributen.
Dienstleister
Der Dienstanbieter fungiert als Vermittler zwischen der Anwendung und dem Gerät. Der Dienstanbieter ist für den Anwendungsentwickler unsichtbar, daher muss ein Anwendungsentwickler nichts über die Entwicklung eines Dienstanbieters wissen. Es ist jedoch der Dienstanbieter, der die Kommunikation mit einem Gerät durchführt.
Ein Dienstanbieter ist eine COM-DLL, die auf dem Windows Media Device Manager basiert, der Anforderungen von einer Anwendung empfängt und mit dem Gerät kommuniziert, um sie auszuführen. Die Kommunikation mit der Desktopanwendung wird durch den Windows Media Device Manager vermittelt. die Kommunikation mit dem Gerät unter der Kontrolle des Dienstanbieters liegt.
Ein Dienstanbieter empfängt Anforderungen von der Anwendung zum Aufzählen von Geräteinhalten, Anforderungen für Gerätefunktionen, Anforderungen zum Lesen oder Schreiben von Daten usw. Es muss das Design eines Geräts gut genug kennen, damit befehle im richtigen Format und Protokoll gesendet werden können. Es sollte auch in der Lage sein, gerätespezifische Anforderungen wie eine erforderliche Dateierweiterung für Wiedergabelisten auszublenden, damit Anwendungen diese Anforderungen nicht kennen müssen, um das Gerät verwenden zu können.
Microsoft stellt eine Reihe von Dienstanbietern für Standardgerätetypen bereit, einschließlich generischer MTP-Geräte, Massenspeicherklassengeräte und RAPI-Geräte. Der einzige Grund, warum ein Gerätedesigner einen benutzerdefinierten Dienstanbieter erstellen muss, besteht darin, dass ein Gerät bestimmte oder ungewöhnliche Datenspeicheranforderungen aufweist, die von den Standarddienstanbietern nicht behandelt werden, z. B. wenn Dateien an bestimmten Speicherorten gespeichert werden müssen und das Gerätebetriebssystem dies nicht automatisch behandelt.
Wenn ein Gerät mit dem Computer verbunden ist, erstellt das Betriebssystem eine Instanz des entsprechenden Dienstanbieters für jede Windows Media Device Manager-Anwendung. Wenn eine zweite Windows Media Device Manager-Anwendung gestartet wird, wird eine zweite Instanz des Dienstanbieters geladen. Jeder Dienstanbieter kann jedoch mehrere Geräte verarbeiten. Das folgende Diagramm veranschaulicht dies.
Das vorherige Diagramm zeigt zwei verschiedene Anwendungen, die mit zwei MTP-Geräten kommunizieren. Die Geräte verwenden dieselbe Dienstanbieterklasse, aber jede Anwendung verfügt über eine eigene Instanz desselben Dienstanbieters. Jede Dienstanbieterinstanz kommuniziert mit Geräten. Die verschiedenen Instanzen des Dienstanbieters sind einander nicht bewusst.
Viele Anwendungsmethoden weisen eine entsprechend benannte Dienstanbietermethode auf. Wenn die Anwendung eine Methode aufruft, leitet Der Windows Media Device Manager den Aufruf an die entsprechende Methode des Dienstanbieters weiter (es kann jedoch zuerst einige zusätzliche interne Aktionen ausführen). Wenn die Anwendung z. B. IWMDMDevice3::GetPropertyaufruft, leitet Der Windows Media Device Manager diesen Aufruf an die Implementierung von IMDSPDevice3::GetPropertyweiter. (Die meisten Anwendungsschnittstellen beginnen mit IWMDM, und die entsprechende Dienstanbieterschnittstelle beginnt mit IMDSP). Es wird erwartet, dass der Dienstanbieter diesen Methodenaufruf verarbeitet und ein entsprechendes Ergebnis zurückgibt.
Eine Anwendung untersucht oder kommuniziert niemals direkt mit einem Gerät (es sei denn, sie ruft IWMDMDevice3::D eviceIoControl oder IWMDMStorage::SendOpaqueCommandauf); die Anwendung kommuniziert mit dem Dienstanbieter, der ein Gerät möglichst logisch und einfach darstellen muss. Wenn die Anwendung Informationen über das Gerät anfordert oder Objekte auf dem Gerät aufzählt, fragt der Dienstanbieter das Gerät entsprechend ab und ruft die entsprechenden Informationen ab und gibt diese zurück. Es kann die Dateiorganisation auf dem Gerät anders verfügbar machen als die physische Speicherung auf dem Gerät, falls dies erforderlich ist. Das Gerät wird jedoch auf konsistente, logische Weise verfügbar gemacht, damit die Anwendung die benötigten Befehle finden und die gesendeten Befehle verarbeiten kann. Ein guter Dienstanbieter blendet gerätespezifische Besonderheiten aus, z. B. wenn das Gerät eine Wiedergabeliste physisch als Datei mit einer benutzerdefinierten Dateierweiterung speichert, sollte der Dienstanbieter diese Erweiterung automatisch hinzufügen, wenn die Anwendung eine Wiedergabeliste auf dem Gerät erstellt; sie sollte nicht davon ausgehen, dass die Anwendung beim Erstellen eines Wiedergabelistenobjekts die richtige Erweiterung kennt.
Dienstanbieter werden innerhalb des Prozesses der aufrufenden Anwendung ausgeführt. Die einzige Ausnahme ist der MTP-Dienstanbieter, der in seinem eigenen Prozess ausgeführt wird. Aus diesem Grund besteht das Risiko, dass ein blockierter Dienstanbieter die aufrufende Anwendung blockiert. Daher sollten Dienstanbieter so konzipiert sein, dass sie robust sind und blockieren können, und Anwendungen sollten so konzipiert sein, dass ein Sperre vermieden wird, wenn ein bestimmter Methodenaufruf nicht schnell zurückgegeben wird.
Verwandte Themen