WriteFile error 87 (INVALIDE_PARAMETER)

kendra533 Messages postés 4 Statut Membre -  
 jperciot -
bonjour,
j'essaye de faire communiquer un periphérique avec connectique bluetooth et usb (je me sers des 2). j'arrive à établir une communication du périphérique vers une application PC mais je n'arrive pas à envoyer des information vers ce periphérique.
mon environnement de developpement est windows XP, j'utilise donc les fonctions createFile pour récupérer un Handle vers mon port com ou mon port usb, readFile pour recevoir des données (dans ce sens, la communication marche), et writeFile pour ecrire vers le périphérique sauf que writeFile echoue et getLastError() me renvoie une erreur de type 87 (à savoir : INVALIDE_PARAMETER)
mon appel à la fonction writeFile est le suivant :
bool success=WriteFile(handle,data,64,&nbWritten,NULL);
avec : handle mon handle vers mon port (il doit etre bon car je peux je peux faire un readFile avec ce handle là)
data un tableau de BYTE de taille 64
nbWritten un pointeur vers un DWORD
mon tableau data semble être initialisé correctement.
D'où peut donc bien venir cette erreur 87 ???

extrait de code (C++) :

....
....
BYTE dataToSend[64];
DWORD nbWritten;

dataToSend[0] = 16 ;
for(int i=1; i<=63;i++){
dataToSend[i]=0;
}
....
....
handle = CreateFile(FunctionClassDeviceData.DevicePath,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);

if(handle != INVALID_HANDLE_VALUE) {
success=WriteFile(h,dataToSend,nbBytesToWrite,&nbWritten,NULL);
if(!success){
std::cout<<"Erreur numéro "<<GetLastError()<< std::endl;
}
}

2 réponses

jperciot
 
Voici mon source.

BOOL rc = ::WriteFile (m_hDeviceFile, (LPCVOID) pBuffer, cbBuf, pcbWritten, FCT_OVERLAPPED ());
if (rc == FALSE)
{
LogToWinFile (TEXT ("Error WriteFile : 0x%08d"), GetLastError ());
}

Et dans le CreateFile , pensez à mettre FILE_FLAG_OVERLAPPED.

Je ne peux pas détailler FCT_OVERLAPPED, car je n'ai pas le source, je l'utilise d'une DLL propriétaire, mais je suppose que ce n'est pas trop compliqué à mettre en place.

Et là, ça doit marcher.

Car 87 c'est INVALID_PARAMETER chez Microsoft.

https://docs.microsoft.com/en-us/windows/win32/debug/system-error-codes--0-499-?redirectedfrom=MSDN

Cordialement
1
kendra533 Messages postés 4 Statut Membre
 
personne n'a ne serait-ce qu'une petite idée, une piste, ou quelque chose d'autre qui pourrait m'aider?
-2