WriteFile error 87 (INVALIDE_PARAMETER)

Fermé
kendra533 Messages postés 4 Date d'inscription vendredi 6 juillet 2007 Statut Membre Dernière intervention 7 août 2007 - 6 juil. 2007 à 20:40
 jperciot - 29 août 2008 à 13:54
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

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 Date d'inscription vendredi 6 juillet 2007 Statut Membre Dernière intervention 7 août 2007
18 juil. 2007 à 11:47
personne n'a ne serait-ce qu'une petite idée, une piste, ou quelque chose d'autre qui pourrait m'aider?
-2