Le premier site francophone dédié au développement Pocket PC


Comment trouver le dossier d'une carte d'extension ?
 
   


Il est possible d'utiliser avec les Pocket PC des cartes mémoire permettant d'y ajouter de l'espace de stockage. C'est très pratique et très souvent utilisé. Mais si vous, développeur, vous devez prendre en compte cet espace de stockage, vous devez l'identifier à coup sûr. Et là, les problèmes commencent...

Prise en compte de l'extension mémoire par le système

Sous Windows CE il n'y a pas de lettre de lecteur comme sous DOS ou sous les Windows de bureau. Le système de stockage est unifié, même si physiquement il est constitué de plusieurs éléments, comme la Ram système, la Rom (ou flashrom), une carte Compact Flash (CF) ou encore une PC Card (PCMCIA).

Lorsque vous ajoutez une carte mémoire (une CF par exemple), le système ajoute un dossier à la racine du système de fichier. Ce dossier représente la racine de cette mémoire de stockage additionnelle. Sur nos Pocket PC français, ce dossier à pour nom "Carte de stockage" pour une CF. Le problème, c'est que ce nom est différent sur un Pocket PC US, où il devient "Storage Card".

Les dossiers d'extension ont un attribut particulier

Tous les dossiers correspondant à un volume d'extension possède un attribut "Dossier", ce qui est normal, et aussi un attribut "Temporaire" qui indique la nature exacte du dossier. Il faut appuyer les recherches sur cette information.

Il faut scanner les dossiers

Pour partir à la recherche d'un dossier correspondant à un volume d'extension, vous devez scanner les dossiers à la racine du système de fichiers. Pour cela, nous allons utiliser les services d'un contrôle eVB, les "FileSystem Controls". Vous trouverez à cette adresse un article complet sur l'utilisation de ce contrôle.

Il faut donc partir à la recherche de tous les dossiers qui ont (en plus de l'attribut "Dossier") l'attribut "Temporaire". Mais nous avons un gros problème car le contrôle "FileSystem" ne gère pas du tout l'attribut "Temporaire". Comme toujours, nous allons contourner ce problème en faisant appel aux API

GetFileAttributes, l'API qui va bien

Il existe une API qui permet de lire les attributs d'un fichier ou d'un dossier. Cette API est "GetFileAttributes" et elle se déclare ainsi en eVB :

Public Declare Function GetFileAttributes Lib "coredll" Alias "GetFileAttributesW" (ByVal wFilename As String) As Long

Son utilisation est simple, il suffit de donner en paramètre le fichier dont on doit récupérer les attributs. Par exemple, si vous voulez récupérer les attributs du fichier "\Windows\Alarm1.wav" :

Dim wAttr As Long
wAttr = GetFileAttributes("\Windows\Alarm1.wav")

Il nous faut aussi la valeur de la constante correspondant à l'attribut "Temporaire". Cette constante se déclare ainsi en eVB :

Const FILE_ATTRIBUTE_TEMPORARY = &h100

et si on veut vérifier que le fichier ou le dossier possède bien l'attribut "Temporaire" il suffit d'effectuer une opération logique "AND" entre la valeur retournée par l'API "GetFileAttributes" et la constante "FILE_ATTRIBUTE_TEMPORARY" :

If wAttr And FILE_ATTRIBUTE_TEMPORARY Then
 Rem Attribut "Temporaire" actif
End If

Nous allons écrire un peu de code qui va scanner les dossiers à la racine et afficher dans une boite de dialogue celui ou ceux qui sont des volumes d'extension :

Donc, on scanne, et on vérifie l'attribut avec l'API qui va bien

Vous pouvez placer ce code dans l'événement click d'un bouton pour le tester.

Dim wFileSystem As FILECTL.FileSystem
Dim d As String
Dim i As Integer
Dim wAttrib As Long
         
Rem Instanciation de l'objet FileSystem
Set wFileSystem = CreateObject("FILECTL.FileSystem")
         
Rem On ne recherche que les dossiers sous la racine
d = wFileSystem.Dir("\*", fsAttrDirectory)
Do While d <> ""
 If GetFileAttributes("\" & d) And FILE_ATTRIBUTE_TEMPORARY Then
  Call Msgbox("Le dossier \" & d & " est un volume          d'extension")
End If d = wFileSystem.Dir Loop

Conclusion

Voila, l'utilisation des cartes d'extension n'est plus du tout un problème maintenant que vous savez repérer leur dossier racine.

 

Stéphane Sibué

 

 
       
   
 
   
Copyright 2001-2004 - Tous droits réservés
 
   

iPAQ est un produit de COMPAQ.
Visual Tools est un produit de Microsoft Corporation.
Toutes les autres marques et produits présents dans ces pages sont la propriété exclusive de leurs sociétés respectives.