12
votes

Qu'est-ce que FADVISE / MADVISE équivalent sur Windows?

sur UNIX, je peux, par exemple, indiquer au système d'exploitation que le mappage sera nécessaire à l'avenir avec POSIX_FADVISE (POSIX_FADV_WILLNEED) . Il va ensuite lire les données si elles le ressentent.

Comment dire à l'accès à l'intention de Windows?


0 commentaires

3 Réponses :


5
votes

Vous pouvez passer file_flag_random_access ou file_flag_Suite_scan à Createefile ()


3 commentaires

Sont-ils les seules possibilités d'allusion aux fenêtres?


En ce qui concerne les astuces, je pense que oui. Vous pouvez désactiver la mise en cache et des choses comme ça, mais certains de ces autres drapeaux ont des exigences d'alignement afin que c'est plus qu'un simple indice


File_Attribute_Temporary semble également utile - selon MSDN .microsoft.com / fr-US / US / Bibliothèque / ... Il indique au système d'éviter d'écrire les données sur le disque s'il existe suffisamment de mémoire cache disponible.



10
votes

En fait, comme les ANDRES suggéraient principalement, Il n'y a pas de méthode de cette manière dans les fonctions de gestion de la mémoire disponibles dans Windows 7 et antérieure .

2 façons différentes existent à faire quelque chose de similaire:

  • Lire les données asynchroniquement avec ReadfileEx . Les données peuvent alors toujours être dans le cache de fichier si nécessaire ultérieurement.
  • Ouvrez le fichier avec un indice de diffusion en continu avec l'attribut file_flag_Suite> attribut de Createfile . ReadaHead serait alors peut-être automatiquement fait.

0 commentaires

11
votes

Commencer avec Windows 8, il y a le préfetchvirtualMemory fonction à cette fin.


0 commentaires