2009-06-06 8 views
2

Je cours un AsyncReader pour ouvrir un fichier MPG partagé en cours de téléchargement par une autre application (téléchargement progressif). Le fichier MPG partagé est créé avec les autorisations partagées FILE-SHARE-READ | FILE-SHARE-DELETE | FILE-SHARE-WRITE. J'ai même essayé toutes les combinaisons de ces drapeaux.Utilisation de DirectShow AsyncReader avec C#

Voici le problème: en C# la méthode AsyncReader.Load renvoie une erreur:

file in use

Dans C++, il ne fonctionne pas. C++ ouvre le fichier très bien.

Une idée pourquoi tout cela est-il?

Répondre

0

Any idea why this is?

C'est parce que File Source (Async) Filter est l'ouverture du fichier exclusivement, sans permettre à d'autres d'écrire progressivement le fichier dans le même temps.

Code pour même/lecteur asynchrone similaire de l'ancien SDK, où il était disponible sous forme d'échantillon, contient:

// Open the requested file 
HANDLE hFile = CreateFile(lpszFileName, 
          GENERIC_READ, 
          FILE_SHARE_READ, 
          NULL, 
          OPEN_EXISTING, 
          0, 
          NULL); 

Remarque FILE_SHARE_READ. Vos options sont:

  1. complet téléchargement progressif avant d'ouvrir pour la lecture
  2. Construire un lecteur personnalisé à partir de l'échantillon SDK et changer le mode d'ouverture de fichier pour permettre l'écriture que vous jouez
Questions connexes