Je viens de developper un processus permettant de mapper un lecteur logique
en user-mode sur un fichier image (ex : e:\td.raw) par l'intermediaire
d'un driver propre à moi.
Quand l'évenement de demande d'écriture sur l'unité est appelé j'utilise
la fonction WriteFile de l'api Windows.
Le probléme : c'est que le WriteFile sur un fichier image et non pas sur
le lecteur logique mappé , eh bien à moment donnée il bloque pendant par
exemple la copie des fichiers vers le lecteur logique mappé en user-mode.
Je suis obliger de redemarrer Windows car tout se bloque.
Bizarre : Quand je mets le WriteFile dans un autre thread et que
j'attend que son execution soit terminé , WriteFile ne bloque plus.
Encore plus bizarrre :
J'ai essayer de mettre dans le thread qui écrit dans le fichier image ,
la fonction fprintf qui lui inscrit sur un autre fichier (ex
c:\debugsecteur.txt) les numéros de secteur. Eh bien là il y a bloquage
soit dans la fonction fprintf ou WriteFile.
Je ne comprend pas.
Expliquation du probléme en interne :
Lors de l'appelle de WriteFile sur un fichier image (ex e:\td.raw) , eh
bien le systéme veux inscrire des données sur le lecteur logique mappé
en user-mode , du coup le driver retourne STATUS_PENDING sur
IRP_MJ_WRITE car l'appelle de l'événement de demande d'écriture de
user-mode n'est pas terminé.
Déjà est-ce les paramétre de CreateFile convient :
{
char nameraw[]="e:\\td.raw";
hraw=CreateFile(nameraw,
GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_FLAG_NO_BUFFERING|FILE_ATTRIBUTE_NORMAL,NULL);
}
Pouvez-vous m'aider car d'aprés le debuggage des logs de mon drivers
c'est windows en faute !
Conclusion : Le noyaux de windows veux inscrire des données dans le
lecteur logique mappé en user-mode pendant la fonction WriteFile et tant
que les données inscrites ne sont pas OK , le noyaux décide de bloquer.
Pourquoi ?
Pourquoi quand je met la fonction Writefile dans un thread ca ne bloque pas.
Dans l'événement d'accés écriture j'appelle la fonction DeviceIoControl !
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Michael Doubez
On 3 nov, 01:21, Mathieu wrote:
Je viens de developper un processus permettant de mapper un lecteur logiq ue en user-mode sur un fichier image (ex : e:td.raw) par l'intermediaire d'un driver propre à moi.
[snip]
Pouvez-vous m'aider ?
Non, pas plus que dans les 200 autres groupes et forums de discussion où tu as posé la même question.
-- Michael
On 3 nov, 01:21, Mathieu <mat.h...@wanadoo.fr> wrote:
Je viens de developper un processus permettant de mapper un lecteur logiq ue
en user-mode sur un fichier image (ex : e:td.raw) par l'intermediaire
d'un driver propre à moi.
[snip]
Pouvez-vous m'aider ?
Non, pas plus que dans les 200 autres groupes et forums de discussion
où tu as posé la même question.
Je viens de developper un processus permettant de mapper un lecteur logiq ue en user-mode sur un fichier image (ex : e:td.raw) par l'intermediaire d'un driver propre à moi.
[snip]
Pouvez-vous m'aider ?
Non, pas plus que dans les 200 autres groupes et forums de discussion où tu as posé la même question.