Manuelles Behandeln von Dateiübertragungen
Ihre Anwendung kann die IWMDMOperation-Schnittstelle implementieren, um einen Teil des Lese- oder Schreibprozesses zu verwalten. Bei einem Lese-/Lesegerät ermöglicht die Implementierung der Anwendung das Empfangen von Rohdatenblöcken aus einer Gerätedatei. Auf einem Gerät mit Schreibzugriff kann die Anwendung Blöcke mit Rohdaten an eine Datei auf dem Gerät senden.
Bei Lese- und Schreibvorgängen übergibt die IWMDMOperation::TransferObjectData-Methode die Daten zwischen dem Computer und dem Gerät. Um die Richtung der Datenübertragung zu kennen, muss Ihre Anwendung ein Flag festlegen, wenn Windows Media Geräte-Manager BeginRead oder BeginWrite aufruft. Wenn die End-Methode aufgerufen wird, sollte die Anwendung dieses Flag zurücksetzen.
Hinweis
Wenn der Dienstanbieter und das Gerät IMDSPObject2ordnungsgemäß implementieren, rufen sie zuerst die IWMDMOperation3::TransferObjectDataOnClearChannel-Methode der Anwendung auf, sofern implementiert. Diese Methode ist eine effizientere Methode zum Übertragen von Daten. TransferObjectDataOnClearChannel wird auf die gleiche Weise wie TransferObjectData behandelt, mit der Ausnahme, dass die Daten nie verschlüsselt werden und keine MAC-Werte zu überprüfen sind.
In den folgenden Abschnitten werden sowohl der Lese- als auch der Schreibvorgang beschrieben, wenn Ihre Anwendung IWMDMOperation implementiert.
Lesen von einem Gerät
Beim Lesen einer Datei von einem Gerät ruft Windows Media Geräte-Manager die folgenden IWMDMOperation-Methoden in der folgenden Reihenfolge auf:
- BeginRead Wird aufgerufen, um die Anwendung zu benachrichtigen, dass ein Lese-/Lese-Gerät beginnt.
- TransferObjectData Wird mindestens einmal aufgerufen. Die Verarbeitung von Daten wird in den folgenden Schritten beschrieben:
- TransferObjectData empfängt einen Puffer pData der Größe pdwSize bytes, gefüllt mit Daten, und einen MAC, um die eingehenden Daten zu überprüfen.
- Die Anwendung überprüft die eingehenden Parameter mit dem eingehenden Daten-MAC.
- Die Anwendung entschlüsselt und liest so viele Daten wie möglich in pData und ändert den zurückgegebenen Wert von pdwSize, um anzugeben, wie viele Bytes tatsächlich gelesen wurden.
- Die Anwendung entschlüsselt die Daten mit CSecureChannelClient::D ecryptParamund speichert sie bei Bedarf oder verwendet sie.
- TransferObjectData gibt S _ OK zurück.
- Windows Media Geräte-Manager weiterhin TransferObjectData aufrufen, bis die Anwendung alle Daten aus der Datei gelesen hat, oder die Anwendung gibt WMDM E USER CANCELLED zurück, um den Vorgang abzubricht (in diesem Fall wird der Lesevorgang abgebrochen, und Windows Media Geräte-Manager ruft _ _ End _ auf).
- Ende Wird aufgerufen, um die Anwendung zu benachrichtigen, dass ein Lese-/Lese-Gerät beendet wird.
Schreiben auf ein Gerät
Beim Schreiben einer Datei auf das Gerät ruft Windows Media Geräte-Manager die folgenden IWMDMOperation-Methoden in der folgenden Reihenfolge auf:
- GetObjectName Wird aufgerufen, damit die Anwendung einen Namen für den neuen Speicher angeben kann. Diese Methode wird nur aufgerufen, wenn die Anwendung keinen Namen in der Insert-Methode angegeben hat.
- GetObjectAttributes Wird aufgerufen, damit die Anwendung Attribute für den neuen Speicher auf dem Gerät angeben kann.
- BeginWrite Wird aufgerufen, um zu benachrichtigen, dass ein Schreibzugriff auf das Gerät beginnt.
- GetObjectTotalSize Wird aufgerufen, um die Gesamtgröße des objekts abzurufen, das auf das Gerät geschrieben wird, um die Optimierung der Übertragung zu ermöglichen, und um Windows Media Geräte-Manager die Möglichkeit zu geben, die Übertragung abzubricht, wenn die Datei für das Gerät zu groß ist.
- TransferObjectData Wird mindestens einmal aufgerufen. Die Verarbeitung von Daten wird in den folgenden Schritten beschrieben:
- TransferObjectData empfängt einen Zeiger auf einen Puffer der Größe pdwSize bytes.
- Die Anwendung ruft einen Datenblock ab, der an das Gerät gesendet werden soll, in der Regel durch Lesen von Daten aus einer Datei, und füllt den empfangenen Puffer mit bis zu pdwSize Bytes. PdwSize sollte (falls erforderlich) geändert werden, um die Anzahl von Bytes widerzuspeichern, die dem Puffer hinzugefügt wurden.
- Die Anwendung erstellt einen MAC aller Methodenparameter.
- Die Anwendung verschlüsselt die Daten im Puffer mit CSecureChannelClient::EncryptParam.
- TransferObjectData gibt S OK zurück, um anzugeben, dass mehr Daten gespeichert sind, oder S FALSE, um anzugeben, dass _ keine daten mehr _ sind. Wenn die Anwendung WMDM E USER CANCELLED zurückgibt, wird der Schreibvorgang abgebrochen, und Windows _ _ Media Geräte-Manager End _ auf.
- Windows Media Geräte-Manager weiterhin TransferObjectData aufrufen, solange die Anwendung S _ OK zurückgibt.
- Ende Wird aufgerufen, um zu benachrichtigen, dass ein Schreibzugriff auf das Gerät beendet wird.
Ein Codebeispiel finden Sie unter Verschlüsselung und Entschlüsselung.