GetPrivateProfileString-Funktion (winbase.h)
Ruft eine Zeichenfolge aus dem angegebenen Abschnitt in einer Initialisierungsdatei ab.
Syntax
DWORD GetPrivateProfileString(
[in] LPCTSTR lpAppName,
[in] LPCTSTR lpKeyName,
[in] LPCTSTR lpDefault,
[out] LPTSTR lpReturnedString,
[in] DWORD nSize,
[in] LPCTSTR lpFileName
);
Parameter
[in] lpAppName
Der Name des Abschnitts, der den Schlüsselnamen enthält. Wenn dieser Parameter NULL ist, kopiert die GetPrivateProfileString-Funktion alle Abschnittsnamen in der Datei in den angegebenen Puffer.
[in] lpKeyName
Der Name des Schlüssels, dessen zugeordnete Zeichenfolge abgerufen werden soll. Wenn dieser Parameter NULL ist, werden alle Schlüsselnamen in dem durch den lpAppName-Parameter angegebenen Abschnitt in den Puffer kopiert, der durch den lpReturnedString-Parameter angegeben wird.
[in] lpDefault
Eine Standardzeichenfolge. Wenn der Schlüssel lpKeyName in der Initialisierungsdatei nicht gefunden werden kann, kopiert GetPrivateProfileString die Standardzeichenfolge in den Puffer lpReturnedString .
Wenn dieser Parameter NULL ist, ist der Standardwert eine leere Zeichenfolge, "".
Vermeiden Sie die Angabe einer Standardzeichenfolge mit nachfolgenden leeren Zeichen. Die Funktion fügt ein NULL-Zeichen in den Puffer lpReturnedString ein, um alle nachfolgenden Leerzeichen zu entfernen.
[out] lpReturnedString
Ein Zeiger auf den Puffer, der die abgerufene Zeichenfolge empfängt.
[in] nSize
Die Größe des Puffers, auf den der parameter lpReturnedString in Zeichen verweist.
[in] lpFileName
Der Name der Initialisierungsdatei. Wenn dieser Parameter keinen vollständigen Pfad zur Datei enthält, sucht das System nach der Datei im Windows-Verzeichnis.
Rückgabewert
Der Rückgabewert ist die Anzahl der Zeichen, die in den Puffer kopiert wurden, ohne das beendende NULL-Zeichen .
Wenn weder lpAppName noch lpKeyNameNULL ist und der angegebene Zielpuffer zu klein ist, um die angeforderte Zeichenfolge aufzunehmen, wird die Zeichenfolge abgeschnitten und gefolgt von einem NULL-Zeichen , und der Rückgabewert ist gleich nSize minus 1.
Wenn lpAppName oder lpKeyNameNULL ist und der angegebene Zielpuffer zu klein ist, um alle Zeichenfolgen aufzunehmen, wird die letzte Zeichenfolge abgeschnitten, gefolgt von zwei NULL-Zeichen . In diesem Fall ist der Rückgabewert gleich nSize minus 2.
Wenn die durch lpFileName angegebene Initialisierungsdatei nicht gefunden wird oder ungültige Werte enthält, wird beim Aufrufen von GetLastError "0x2" (Datei nicht gefunden) zurückgegeben. Rufen Sie GetLastError auf, um erweiterte Fehlerinformationen abzurufen.
Hinweise
Die GetPrivateProfileString-Funktion durchsucht die angegebene Initialisierungsdatei nach einem Schlüssel, der dem vom lpKeyName-Parameter angegebenen Namen unter der abschnittsüberschrift entspricht, die durch den lpAppName-Parameter angegeben wird. Wenn sie den Schlüssel findet, kopiert die Funktion die entsprechende Zeichenfolge in den Puffer. Wenn der Schlüssel nicht vorhanden ist, kopiert die Funktion die Standardzeichenfolge, die durch den lpDefault-Parameter angegeben wird. Ein Abschnitt in der Initialisierungsdatei muss die folgende Form aufweisen:
[section]
key=string
.
.
.
Wenn lpAppNameNULL ist, kopiert GetPrivateProfileString alle Abschnittsnamen in der angegebenen Datei in den angegebenen Puffer. Wenn lpKeyNameNULL ist, kopiert die Funktion alle Schlüsselnamen im angegebenen Abschnitt in den angegebenen Puffer. Eine Anwendung kann diese Methode verwenden, um alle Abschnitte und Schlüssel in einer Datei aufzulisten. In beiden Fällen folgt auf jede Zeichenfolge ein NULL-Zeichen und auf die letzte Zeichenfolge ein zweites NULL-Zeichen . Wenn der angegebene Zielpuffer zu klein ist, um alle Zeichenfolgen aufzunehmen, wird die letzte Zeichenfolge abgeschnitten und gefolgt von zwei NULL-Zeichen .
Wenn die lpKeyName zugeordnete Zeichenfolge in einfache oder doppelte Anführungszeichen eingeschlossen ist, werden die Markierungen verworfen, wenn die GetPrivateProfileString-Funktion die Zeichenfolge abruft.
Bei der GetPrivateProfileString-Funktion wird die Groß-/Kleinschreibung nicht beachtet. die Zeichenfolgen können eine Kombination aus Groß- und Kleinbuchstaben sein.
Um eine Zeichenfolge aus der Win.ini datei abzurufen, verwenden Sie die GetProfileString-Funktion .
Das System ordnet die meisten .ini Dateiverweise der Registrierung zu, wobei die unter dem folgenden Registrierungsschlüssel definierte Zuordnung verwendet wird:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\IniFileMapping
Diese Zuordnung ist wahrscheinlich, wenn eine Anwendung Systemkomponenteninitialisierungsdateien wie Control.ini, System.ini und Winfile.ini ändert. In diesen Fällen ruft die Funktion Informationen aus der Registrierung ab, nicht aus der Initialisierungsdatei. die Änderung des Speicherorts hat keine Auswirkungen auf das Verhalten der Funktion.
Die Profilfunktionen verwenden die folgenden Schritte, um Initialisierungsinformationen zu suchen:
- Suchen Sie in der Registrierung nach dem Namen der Initialisierungsdatei unter dem Schlüssel IniFileMapping .
- Suchen Sie nach dem von lpAppName angegebenen Abschnittsnamen. Dies ist ein benannter Wert unter dem Schlüssel, der den Namen der Initialisierungsdatei enthält, oder ein Unterschlüssel mit diesem Namen, oder der Name ist weder als Wert noch als Unterschlüssel vorhanden.
- Wenn der von lpAppName angegebene Abschnittsname ein benannter Wert ist, gibt dieser Wert an, wo sie in der Registrierung die Schlüssel für den Abschnitt finden.
- Wenn der von lpAppName angegebene Abschnittsname ein Unterschlüssel ist, geben benannte Werte unter diesem Unterschlüssel an, wo sie in der Registrierung die Schlüssel für den Abschnitt finden. Wenn der gesuchte Schlüssel nicht als benannter Wert vorhanden ist, gibt es einen unbenannten Wert (als <Kein Name>), der den Standardspeicherort in der Registrierung angibt, in der Sie den Schlüssel finden.
- Wenn der von lpAppName angegebene Abschnittsname nicht als benannter Wert oder als Unterschlüssel vorhanden ist, gibt es einen unbenannten Wert (als No Name>)< an, der den Standardspeicherort in der Registrierung angibt, an dem Sie die Schlüssel für den Abschnitt finden.
- Wenn kein Unterschlüssel oder Eintrag für den Abschnittsnamen vorhanden ist, suchen Sie nach der tatsächlichen Initialisierungsdatei auf dem Datenträger, und lesen Sie den Inhalt.
- ! – Dieses Zeichen erzwingt, dass alle Schreibvorgänge sowohl zur Registrierung als auch zur .ini Datei auf dem Datenträger gelangen.
- # : Dieses Zeichen bewirkt, dass der Registrierungswert auf den Wert in der Windows 3.1-.ini-Datei festgelegt wird, wenn sich ein neuer Benutzer nach dem Setup zum ersten Mal anmeldet.
- @ : Dieses Zeichen verhindert, dass Lesevorgänge zur .ini-Datei auf dem Datenträger wechseln, wenn die angeforderten Daten nicht in der Registrierung gefunden werden.
- USR: Dieses Präfix steht für HKEY_CURRENT_USER, und der Text nach dem Präfix ist relativ zu diesem Schlüssel.
- SYS: Dieses Präfix steht für HKEY_LOCAL_MACHINE\SOFTWARE, und der Text nach dem Präfix ist relativ zu diesem Schlüssel.
Beispiel
Im folgenden Beispiel wird die Verwendung von GetPrivateProfileString veranschaulicht.
// Gets a profile string called "Preferred line" and converts it to an int.
GetPrivateProfileString (
"Preference",
"Preferred Line",
gszNULL,
szBuffer,
MAXBUFSIZE,
gszINIfilename
);
// if szBuffer is not empty.
if ( lstrcmp ( gszNULL, szBuffer ) )
{
dwPreferredPLID = (DWORD) atoi( szBuffer );
}
else
{
dwPreferredPLID = (DWORD) -1;
}
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 2000 Professional [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows 2000 Server [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | winbase.h (einschließlich Windows.h) |
Bibliothek | Kernel32.lib |
DLL | Kernel32.dll |