Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : SOS : API GetVolumeInformation dans VB.NET [ Archives Visual Basic / API ] (venka)

mercredi 19 avril 2006 à 18:36:15 | SOS : API GetVolumeInformation dans VB.NET

venka

Bonjour,

Je cherche dédespérément à utiliser la fonction "GetVolumeInformation" de l'API Windows car elle renvoie une information qu'aucune des méthodes de System.IO ne fournit.

Le code est le suivant :

Imports System.Runtime.InteropServices

Imports System.Text

 

' Class to wrap up Windows 32 API constants and functions.

Public Class Win32API

      Public Declare Function GetVolumeInformation Lib "kernel32" _

       Alias "GetVolumeInformationA" _

(ByVal lpRootPathName As String, _

             ByVal lpVolumeNameBuffer As StringBuilder, _

             ByRef nVolumeNameSize As Integer, _

             ByRef lpVolumeSerialNumber As Integer, _

             ByRef lpMaximumComponentLength As Integer, _

             ByRef lpFileSystemFlags As Integer, _

             ByVal lpFileSystemNameBuffer As StringBuilder, _

             ByRef lpFileSystemNameBuffer As Integer , _

             ByRef nFileSystemNameSize As Integer) As Integer

End Class

 

Const StringBufferLength As Integer = 255

 

Dim lsRootPathName As String
Dim lsVolumeNameBuffer As New StringBuilder(StringBufferLength)

Dim lnVolumeNameSize As Integer = StringBufferLength

Dim lnVolumeSerialNumber As Integer

Dim lnMaximumComponentLength As Integer

Dim lnFileSystemFlags As Integer

Dim lsFileSystemNameBuffer As New StringBuilder(StringBufferLength)

Dim lnFileSystemNameSize As Integer = StringBufferLength


Dim
lnReturn As Integer


lsRootPathName = “C:\”

llVolumNmSz = StringBufferLength
llFileSysSz = StringBufferLength

llVolSerNum = 0

llMaxCompnt = 0

llFileSsFlg = 0

lnReturn = Win32API.GetVolumeInformation(lsRootPathName, lsVolumeNameBuffer, lnVolumeNameSize, lnVolumeSerialNumber, lnMaximumComponentLength, lnFileSystemFlags, lsFileSystemNameBuffer, lnFileSystemNameSize)

Quand j'appelle la fonction celle-ci semble fonctionner car j’obtiens une valeur différente de zéro dans lnReturn.

Mais aucun des paramètres n’est renseigné en retour, ils restent désespérément vides. Et je ne peux pas me passer de cette API car elle renvoie le numéro de série du volume qui est une information primordiale dans mon application.

Si quelqu’un peut me dépanner.

Venka


jeudi 20 avril 2006 à 00:03:22 | Re : SOS : API GetVolumeInformation dans VB.NET

BruNews

Administrateur CodeS-SourceS
Réponse acceptée !
PREAMBULE: je ne dotnette pas mais y a des trucs qui semblent bizzares.

nVolumeNameSize en ByRef ??? pas cohérent c'est l'info de taille buffer, la valeur doit être directement PUSHée sur la pile et non pas l'adresse de la taille.
nFileSystemNameSize idem.

Essaie avec ces 2 params en ByVal, devrait aller mieux.

ciao...
BruNews, MVP VC++

jeudi 20 avril 2006 à 01:21:23 | Re : SOS : API GetVolumeInformation dans VB.NET

venka

Mille mercis BruNews.
Je ne cherchais pas dans la bonne direction. J'étais persuadé que la fonction utilisait les paramètres de taille de buffer pour indiquer la taille des chaînes inscrites en retour. Ce principe étant mis en oeuvre dans d'autres fonctions de l'API Windows, j'ai pas cherché plus loin.
Encore merci, grâce à toi je vais arrêter de m'arracher les cheveux pour un bout de temps (j'espère).
Bye
Venka



Cette discussion est classé dans : api, integer, getvolumeinformation, stringbuilder, stringbufferlength


Répondre à ce message

Sujets en rapport avec ce message

Api qui ne marche plus avec Win2000 [ par pascal25 ] Bonjour à tous,En VB4, qui saurait me dire pourquoi le remplissage d'une forme avec une couleur en utilisant les API suivants marchait bien sous Win98 Grave PBE avec API findExe [ par leptidev ] Bonjour, j'ai un problème d'écriture de la part de VB directement quand j'essaye d'exécuter l'API : FindExecutable, en plus elle marche pas !Que faire Arrondi .... [ par JsOpdebeeck ] Comment faire un arrondi d'une valeur (genre 8,25 ou 12,98) toujours a l'entier le plus bas (ici 8 et 12).Quand je met a 'integer' j'obtiens un arrond J'ai besoin de votre aide [ par seradji ] BonjourJ'ai vraiment besoin de votre aide. Sur un FORM, je place 2 line et je souhaite qu'ils convergent vers la position de la souris quelque soit so Recherche de l'API Windows ! [ par Thomaz ] Salut, je cherche quelqu'un qui pourrait m'envoyer une liste complète de toutes les fonctions API Windows avec une description de ce qu'elles gèrent. API pour resolution d'ecran [ par greg13 ] Existe t'il une api qui permet de connaitre la resolution de l'ecranMerciGreg Fichier API introuvable [ par MrLoloM ] Bonjour, Je débute avec les API et j'ai un petit problème : mon projet fait référence à un fichier API nommé ACVB65_dll.APX.Le nom d'appel de l'API variables sur plusieurs feuilles [ par marco59 ] Salut à vous,Je suis un novice dans VB et j?ai un problème de variables qu?il faut que je déclare dans plusieurs feuilles. EX :Form1 :Public variable HELP!!!! ombre de fichiers dans un répertoire pas API ou FSO [ par yomm ] voila je souhaiterai obtenir le nombre de fichiers présent dans un répertoire mais en contabilisant également les fichiers présent dans les sous-réper HELP!!!! ombre de fichiers dans un répertoire par API ou FSO [ par yomm ] voila je souhaiterai obtenir le nombre de fichiers présent dans un répertoire mais en contabilisant également les fichiers présent dans les sous-réper


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,281 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.