Erreur système 124 – ERROR_INVALID_LEVEL avec SHFileOperation

J’avais un problème avec l’utilisation de SHFileOperation : SHFileOperation / SHFILEOPSTRUCT . Je l’ai fait fonctionner mais j’essaie maintenant de le mettre dans une fonction car il sera utilisé plusieurs fois dans mon code. Les fonctions sont:

 void SHFileOperationFunc(ssortingng item1, ssortingng item2, int operation) { SHFILEOPSTRUCT sf; memset(&sf,0,sizeof(sf)); sf.hwnd = 0; sf.fFlags = FOF_NOCONFIRMATION | FOF_NOCONFIRMMKDIR | FOF_NOERRORUI; switch(operation) { case 1: case 2: sf.wFunc = FO_COPY; ssortingng files = item1 + "\\*.*"; files.append(1, '\0'); sf.pFrom = files.c_str(); item2.append(1, '\0'); sf.pTo = item2.c_str(); } int opOkay = SHFileOperation(&sf); if(opOkay != 0) { //FAIL } 

}

Quand j’avais le code en dehors de la fonction, ça marchait bien. Mais maintenant que c’est comme ci-dessus, je reçois une erreur renvoyée à opOkay. La valeur d’erreur est 124, ce qui signifie que ERROR_INVALID_LEVEL – Le niveau de l’appel système n’est pas correct. Je ne sais pas ce que cela signifie. Google n’a pas été d’une grande aide non plus. Quelqu’un m’a éclairé?

SHFileOperation je aussi utiliser SHFileOperation ou devrais-je utiliser IFileOperation ?

À votre santé.

Le problème est que les files seront hors de scope lorsque le bloc de commutation se terminera et que sf.pFrom deviendra un pointeur en sf.pFrom . Déplacer la déclaration de files en dehors du switch .

Notez que vous n’avez pas de break dans les blocs de switch .