none
Activer/désactiver le cache d'un fichier RRS feed

  • Discussion générale

  • Y-a-t-il un appel pour activer/désactiver le cache d'un fichier ouvert avec CreateFile ? Pour les disques physiques je sais qu'on peut utiliser: 

    DeviceIoControl(handle, IOCTL_DISK_GET_CACHE_INFORMATION, NULL, 0, (LPVOID)&_info, (DWORD)sizeof(_info), (LPDWORD)&_returned, (LPOVERLAPPED)NULL)
    mais cet appel échoue si handle est le handle d'un fichier existant sous le disque dur avec le code d'erreur ERROR_INVALID_PARAMETER.


    bogdan
    • Type modifié Ciprian Duduiala dimanche 26 juin 2011 11:09 attente de feedback
    lundi 20 juin 2011 09:30

Toutes les réponses

  • IOCTL_DISK_GET_CACHE_INFORMATION ??

    IOCTL_DISK_SET_CACHE_INFORMATION

    GetLastError dit quoi ?

    Ma boule de cristal est en révision. ;-))


    Paul Bacelar, Ex - MVP VC++
    lundi 20 juin 2011 11:35
    Modérateur
  • Sur quel version de Windows travaillez-vous ? Car sous Vista ou 7, il faut être administrateur pour modifier certaines propriétés du disque dur.

     

    Essayez:


    DISK_CACHE_INFORMATION StrCache;

    DWORD BytesReturned;

     

     

    Obtenir les informations du disque dur...

     

    DeviceIoControl(

      hDevice,                 // handle to device

      IOCTL_DISK_GET_CACHE_INFORMATION, // dwIoControlCode

      NULL,                             // lpInBuffer

      0,                                // nInBufferSize

      &StrCache;,             // output buffer

      sizeof(DISK_CACHE_INFORMATION ),           // size of output buffer

      &BytesReturned,        // number of bytes returned

      NULL       // OVERLAPPED structure

    );

     

    Désactivez les Caches en écriture et lecture:

     

    StrCache.ReadCacheEnabled=false;

    StrCache.WriteCacheEnabled=false;

     

    DeviceIoControl(

      hDevice,                 // handle to device

      IOCTL_DISK_SET_CACHE_INFORMATION, // dwIoControlCode

      &StrCache;,             // InBuffer output buffer

      sizeof(DISK_CACHE_INFORMATION ),           // size of input buffer  

    NULL,                             

      0,                                

      &BytesReturned,        // number of bytes returned

      NULL       // OVERLAPPED structure

    );

     


    Delphine GARRO
    mercredi 29 juin 2011 14:50
  • Je suis sous Win 7. Merci de votre aide.
    bogdan
    vendredi 1 juillet 2011 08:53
  • ERROR_INVALID_PARAMETER
    bogdan
    vendredi 1 juillet 2011 12:22
  • Cause la plus probable, vous avez mal ou oublié d'initialisé un ou plusieurs paramètre.

     

    Pouvez-vous donner un extrait du code qui reproduit le problème ?


    Paul Bacelar, Ex - MVP VC++
    mercredi 27 juillet 2011 09:45
    Modérateur