PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV (earlier versions) → API et services HELP !
API et services HELP !
Started by Alain Prospéro, Jun., 07 2004 6:57 PM - No answer
Posted on June, 07 2004 - 6:57 PM
J'ai un truc bizarre avec l'API QueryServiceConfigA de ADVAPI32.DLL.
D'après le site de microsoft, il faut faire un 1er appel pour avoir une erreur
permettant d'obtenir la taille nécessaire du buffer de sortie, puis un 2ème
appel pour remplir ce buffer.
Mon 1er appel fonctionne mais j'ai systèmatiquement une erreur fatale lors
du 2ème appel (cf code ci-dessous. QUERY_SERVICE_CONFIGA est une structure
qui contiendra la config demandée) :

PROCEDURE ServiceQuery( ServiceName_ est une chaîne, vlc_Demarrage = "",
vle_Demarrage = 0 )
PRIVÉ
vlc_ServiceName est une chaîne = ServiceName_
ServiceConfig est un QUERY_SERVICE_CONFIGA
vle_ServiceStatus est un entier
vle_OK est un entier
TailleBuffer est un entier = Null
TailleBufferNécessaire est un entier = 0
Resultat est un entier


vlc_Demarrage = "Pas de service ou erreur"

// On ouvre le service
vle_OK = :ServiceOpen( vlc_ServiceName )

// Ouverture OK
SI vle_OK = 0 ALORS

// On lance une 1ère fois pour récupérer la taille du buffer
Resultat = API( "ADVAPI32.DLL", "QueryServiceConfigA", :vle_Service, &ServiceConfig,
TailleBuffer, &TailleBufferNécessaire )

// On renseigne la taille pour le prochain appel
TailleBuffer = TailleBufferNécessaire
TailleBufferNécessaire = 0


// On récupère les informations de configuration
Resultat = API( "ADVAPI32.DLL", "QueryServiceConfigA", :vle_Service, &ServiceConfig,
TailleBuffer, &TailleBufferNécessaire )

--------------------------
------ Ca plante ci-dessus
--------------------------