/ / Par code, comment envoyer un lecteur de disque dur en mode veille - c #, windows, hardware

Par code, comment envoyer un lecteur de disque dur en mode veille - c #, windows, hardware

J'ai beaucoup de disques durs sur mon ordinateur (7).

Quand ils ne sont pas utilisés, l'option d'alimentation les envoiedormir après un moment. Mais comme tout fait beaucoup de bruit, je voudrais les mettre en veille quand je le souhaite, pas juste après le délai d’expiration par défaut du système.

Sous Windows (XP et supérieur), de préférence en C #,

Comment puis-je envoyer un disque en veille par code?

Merci beaucoup d'avance pour votre aide ...

Réponses:

1 pour la réponse № 1

Je ne connais pas l'API pour le faire directement, mais il existe des outils qui peuvent le faire. Celui que j'ai vu est Sleeper disque dur. Je ne l'ai pas utilisé sur mes propres machines, je ne peux donc pas parler de sa qualité ni de son efficacité.


1 pour la réponse № 2

Il est possible de le faire si vous envoyez des commandes ATA directement à un lecteur en utilisant IOCTL_ATA_PASS_THROUGH. Vous devrez passer la commande SLEEP.

Je ne pense pas que ce soit un projet pour C # cependant.


1 pour la réponse № 3

Autant que je sache, il s'agit d'une commande ATA qui définit le * spindown time8 - c’est-à-dire que c’est le lecteur lui-même qui s’arrête. Vous pouvez utiliser IOCTL_ATA_PASS_THROUGH pour envoyer des commandes directement au lecteur. Je ne sais pas ce que c’est, mais ça devrait être dans les spécifications de l’ATA).

Edit: On dirait le vénérable hdparm le soutient, il doit donc être dans la spécification ATA:

-y Forcer un lecteur IDE à entrer immédiatement en mode veille à faible consommation d'énergie, ce qui entraîne généralement son ralentissement.

-Y Forcer un lecteur IDE à entrer immédiatement dans lemode veille à la consommation d’énergie la plus faible, l’éteignant complètement. Une réinitialisation matérielle ou logicielle est nécessaire avant de pouvoir accéder à nouveau au lecteur (le pilote IDE Linux se chargera automatiquement de la réinitialisation si nécessaire).

Depuis hdparm (et le noyau Linux sous-jacent qu’il utilise pour communiquer avec le lecteur) est GPL. Vous devriez être en mesure d’enregistrer les détails à partir de là si vous ne possédez pas de spécification ATA.

Ou, utilisez simplement le port win32.


0 pour la réponse № 4

Honnêtement, je ne pense pas qu’il soit possible de le faire en utilisant uniquement C # (c’est-à-dire le framework .NET).

Peu importe, je commencerais par apprendre WMI et ACPI.

Cela tend à être le genre de chose qui nécessitevous devez vous plonger dans un langage de niveau inférieur (au moins pour comprendre les appels d'API à utiliser avec PInvoke), car il implique généralement une interaction étroite avec le système d'exploitation ou éventuellement directement avec un pilote.

Peut-être pourriez-vous commencer par enquêter sur les Fonctions de gestion de l'alimentation Windows Bien que je ne pense pas que cela permette de contrôler les disques durs individuels.