2009-06-08 4 views
1

Die Dokumentation für die neue Vista-API besagt, dass die PowerEnumerate-Funktion zum Aufzählen von Energieschemas, Schemaeinstellungen und einer Fülle von Informationen verwendet werden kann. Die letzten beiden Parameter sind Buffer und BufferSize ist unklar, welche Strukturen oder Datenlayout/-format für die Daten verwendet wird, die von der API im Puffer zurückgegeben werden?Welche Strukturen/Daten gibt die PowerEnumerate-Funktion zurück

+0

Mann, +1, weil dies die hässlichste API-Dokumentation sein muss, die ich jemals in MSDN gesehen habe. Ich kann nicht für das Leben von mir herausfinden, wie man diesen Puffer benutzt, außer vielleicht, es in einer Uhr zu untersuchen und zu versuchen, wenn es eine Schnur oder eine Guid oder etwas ist. –

Antwort

2

Der Ausgabepuffer ist eine GUID. Sie können diese GUID verwenden, um zusätzliche Aufrufe der Power * -Funktionen vorzunehmen (d. H. Rekursiv die Struktur zu durchlaufen, Einstellungsnamen und -werte abzufragen usw.).

Zum Beispiel der folgende Code einige Einstellungsnamen von den Plattenenergieeinstellungen in der aktuellen Energieschema aufzählt:

 
GUID *scheme; 

if(ERROR_SUCCESS == PowerGetActiveScheme(NULL, &scheme)) 
{ 
    GUID buffer; 
    DWORD bufferSize = sizeof(buffer); 

    for(int index = 0; ; index++) 
    { 
     if(ERROR_SUCCESS == PowerEnumerate(
           NULL, 
           scheme, 
           &GUID_DISK_SUBGROUP, 
           ACCESS_INDIVIDUAL_SETTING, 
           index, 
           (UCHAR*)&buffer, 
           &bufferSize)) 
     { 
      UCHAR displayBuffer[1024]; 
      DWORD displayBufferSize = sizeof(displayBuffer); 

      if(ERROR_SUCCESS == PowerReadFriendlyName(
            NULL, 
            scheme, 
            &GUID_DISK_SUBGROUP, 
            &buffer, 
            displayBuffer, 
            &displayBufferSize)) 
      { 
       wprintf(L"%s\n", (wchar_t*)displayBuffer); 
      } 
     } 
    } 
} 

Wie Sie die Schritte sind sehen:

  1. die aktuelle Energieschema erhalten
  2. Die Laufwerkseinstellungen im aktuellen Schema auflisten
  3. Den Anzeigenamen jeder aufgezählten Einstellung drucken

Auf meinem Rechner die Ausgabe:

 
Turn off hard disk after 
Hard disk burst ignore time 

Hoffentlich hilft erhalten Sie in die richtige Richtung.

Dies ist kein Produktionsqualitätscode, der kleine Größen und optimistische Puffergrößen gegenüber Robustheit bevorzugt.

Verwandte Themen