Condividi tramite


Gestione manuale dei trasferimenti di file

L'applicazione può implementare l'interfaccia IWMDMOperation per gestire parte del processo di lettura o scrittura. In una lettura dal dispositivo, l'implementazione consente all'applicazione di ricevere blocchi di dati non elaborati da un file di dispositivo. In un dispositivo di scrittura consente all'applicazione di inviare blocchi di dati non elaborati a un file nel dispositivo.

Nelle operazioni di lettura e scrittura, il metodo IWMDMOperation::TransferObjectData passa i dati tra il computer e il dispositivo. Per conoscere la direzione del trasferimento dei dati, l'applicazione deve impostare un flag quando Windows Media Gestione dispositivi chiama BeginRead o BeginWrite. Quando viene chiamato il metodo End , l'applicazione deve reimpostare questo flag.

Nota

Se il provider di servizi e il dispositivo implementano correttamente IMDSPObject2, chiamerà prima il metodo IWMDMOperation3::TransferObjectDataOnClearChannel, se implementato. Questo metodo è un modo più efficiente per trasferire i dati. TransferObjectDataOnClearChannel viene gestito allo stesso modo di TransferObjectData, ad eccezione del fatto che i dati non vengono mai crittografati e non hanno valori MAC da verificare.

 

Le sezioni seguenti descrivono sia la lettura che il processo di scrittura, quando l'applicazione implementa IWMDMOperation.

Lettura da un dispositivo

Quando si legge un file da un dispositivo, Windows Media Gestione dispositivi chiama i metodi IWMDMOperation seguenti in ordine:

  • BeginRead Chiamato per notificare all'applicazione che inizia una lettura dal dispositivo.
  • TransferObjectData Chiamato una o più volte. L'elaborazione dei dati è descritta nei passaggi seguenti:
    1. TransferObjectData riceve un buffer, pData, di dimensioni pdwSize byte, riempito di dati e un MAC per verificare i dati in ingresso.
    2. L'applicazione verifica i parametri in ingresso con il MAC dei dati in ingresso.
    3. L'applicazione decrittografa e legge la maggior parte dei dati in pData possibile e modifica il valore restituito di pdwSize per indicare il numero di byte effettivamente letti.
    4. L'applicazione decrittografa i dati usando CSecureChannelClient::D ecryptParam e li archivia o li usa in base alle esigenze.
    5. TransferObjectData restituisce S_OK.
    6. Windows Media Gestione dispositivi continua a chiamare TransferObjectData fino a quando l'applicazione non ha letto tutti i dati dal file oppure l'applicazione restituisce WMDM_E_Uedizione StandardR_CANCELLED per annullare l'operazione (nel qual caso la lettura viene annullata e Windows Media Gestione dispositivi chiama Fine).
  • End Chiamato per notificare all'applicazione che sta terminando una lettura dal dispositivo.

Scrittura in un dispositivo

Quando si scrive un file nel dispositivo, Windows Media Gestione dispositivi chiama i metodi IWMDMOperation seguenti in ordine:

  • GetObjectName Chiamato per consentire all'applicazione di specificare un nome per la nuova risorsa di archiviazione. Questo metodo viene chiamato solo se l'applicazione non ha specificato un nome nel metodo Insert .
  • GetObjectAttributes Chiamata per consentire all'applicazione di specificare gli attributi per la nuova risorsa di archiviazione nel dispositivo.
  • BeginWrite Chiamata per notificare che inizia una scrittura nel dispositivo.
  • GetObjectTotalSize Chiamato per recuperare le dimensioni totali dell'oggetto scritto nel dispositivo, per abilitare l'ottimizzazione del trasferimento e anche per concedere a Windows Media Gestione dispositivi l'opportunità di annullare il trasferimento se il file è troppo grande per il dispositivo.
  • TransferObjectData Chiamato una o più volte. L'elaborazione dei dati è descritta nei passaggi seguenti:
    1. TransferObjectData riceve un puntatore a un buffer di dimensioni pdwSize byte.
    2. L'applicazione ottiene un blocco di dati da inviare al dispositivo, in genere leggendo i dati da un file e riempie il buffer ricevuto con un massimo di byte pdwSize . Deve modificare pdwSize (se necessario) per riflettere il numero di byte aggiunti al buffer.
    3. L'applicazione crea un MAC di tutti i parametri del metodo.
    4. L'applicazione crittografa i dati nel buffer usando CSecureChannelClient::EncryptParam.
    5. TransferObjectData restituisce S_OK per indicare che sono presenti più dati o S_FALedizione Standard per indicare che non sono presenti altri dati. Se l'applicazione restituisce WMDM_E_Uedizione StandardR_CANCELLED, l'operazione di scrittura viene annullata e Windows Media Gestione dispositivi chiamerà End.
    6. Windows Media Gestione dispositivi continua a chiamare TransferObjectData finché l'applicazione restituisce S_OK.
  • End Chiamato per notificare che una scrittura nel dispositivo sta terminando.

Per un esempio di codice, vedere Crittografia e decrittografia.

Creazione di un'applicazione windows Media Gestione dispositivi