“Andre? Werthmann” schrieb:
Hello,
I’m currently porting GLHeretic over to Linux (GLX/Mesa) and I have an unknown
win-specific function found, that I can’t replace with Unix-code, because I
don’t know what it does. Perhaps someone can help me with that:
char C_sz_MD2ini[255];
char szBuffer[1024];
char *buffer;
GetPrivateProfileString(buffer,“anim”,"-",szBuffer,1024,C_sz_MD2ini);
From the Microsoft Visual C++ Help:
GetPrivateProfileString
The GetPrivateProfileString function retrieves a string from the
specified section in an initialization file. This function is provided
for compatibility with 16-bit Windows-based applications. Win32-based
applications should store initialization information in the registry.
DWORD GetPrivateProfileString(
LPCTSTR lpAppName, // points to section name
LPCTSTR lpKeyName, // points to key name
LPCTSTR lpDefault, // points to default string
LPTSTR lpReturnedString, // points to destination buffer
DWORD nSize, // size of destination buffer
LPCTSTR lpFileName // points to initialization filename
);
Parameters
lpAppName
Pointer to a null-terminated string that specifies the section
containing the key name. If this parameter is NULL, the
GetPrivateProfileString function copies all section names in the file to
the supplied buffer.
lpKeyName
Pointer to the null-terminated string containing the key name whose
associated string is to be retrieved. If this parameter is NULL, all key
names in the section specified by the lpAppName parameter are copied to
the buffer specified by the lpReturnedString parameter.
lpDefault
Pointer to a null-terminated default string. If the lpKeyName key cannot
be found in the initialization file, GetPrivateProfileString copies the
default string to the lpReturnedString buffer. This parameter cannot be
NULL.
Avoid specifying a default string with trailing blank characters. The
function inserts a null character in the lpReturnedString buffer to
strip any trailing blanks.
Windows 95: Although lpDefault is declared as a constant parameter, the
system strips any trailing blanks by inserting a null character into the
lpDefault string before copying it to the lpReturnedString buffer.
Windows NT: The system does not modify the lpDefault string. This means
that if the default string contains trailing blanks, the
lpReturnedString and lpDefault strings will not match when compared
using the lstrcmp function.
lpReturnedString
Pointer to the buffer that receives the retrieved string.
nSize
Specifies the size, in characters, of the buffer pointed to by the
lpReturnedString parameter.
lpFileName
Pointer to a null-terminated string that names the initialization file.
If this parameter does not contain a full path to the file, the system
searches for the file in the Windows directory.
Return Values
The return value is the number of characters copied to the buffer, not
including the terminating null character.
If neither lpAppName nor lpKeyName is NULL and the supplied destination
buffer is too small to hold the requested string, the string is
truncated and followed by a null character, and the return value is
equal to nSize minus one.
If either lpAppName or lpKeyName is NULL and the supplied destination
buffer is too small to hold all the strings, the last string is
truncated and followed by two null characters. In this case, the return
value is equal to nSize minus two.
Remarks
The GetPrivateProfileString function searches the specified
initialization file for a key that matches the name specified by the
lpKeyName parameter under the section heading specified by the lpAppName
parameter. If it finds the key, the function copies the corresponding
string to the buffer. If the key does not exist, the function copies the
default character string specified by the lpDefault parameter. A section
in the initialization file must have the following form:
[section]
key=string
.
.
.
If lpAppName is NULL, GetPrivateProfileString copies all section names
in the specified file to the supplied buffer. If lpKeyName is NULL, the
function copies all key names in the specified section to the supplied
buffer. An application can use this method to enumerate all of the
sections and keys in a file. In either case, each string is followed by
a null character and the final string is followed by a second null
character. If the supplied destination buffer is too small to hold all
the strings, the last string is truncated and followed by two null
characters.
If the string associated with lpKeyName is enclosed in single or double
quotation marks, the marks are discarded when the
GetPrivateProfileString function retrieves the string.
The GetPrivateProfileString function is not case-sensitive; the strings
can be a combination of uppercase and lowercase letters.
To retrieve a string from the WIN.INI file, use the GetProfileString
function.
Windows NT: Calls to private profile functions may be mapped to the
registry instead of to the specified initialization files. This mapping
occurs when the initialization file and section are specified in the
registry under the following keys:
HKEY_LOCAL_MACHINE\Software\Microsoft
Windows NT\CurrentVersion\IniFileMapping
This mapping is likely if an application modifies system-component
initialization files, such as CONTROL.INI, SYSTEM.INI, and WINFILE.INI.
In these cases, the GetPrivateProfileString function retrieves
information from the registry, not from the initialization file; the
change in the storage location has no effect on the function’s behavior.
The Win32 profile functions (Get/WriteProfile*,
Get/WritePrivateProfile*) use the following steps to locate
initialization information:
Look in the registry for the name of the initialization file, say
MYFILE.INI, under IniFileMapping:
HKEY_LOCAL_MACHINE\Software\Microsoft
Windows NT\CurrentVersion\IniFileMapping\myfile.ini
Look for the section name specified by lpAppName. This will be a named
value under myfile.ini, or a subkey of myfile.ini, or will not exist.
If the section name specified by lpAppName is a named value under
myfile.ini, then that value specifies where in the registry you will
find the keys for the section.
If the section name specified by lpAppName is a subkey of myfile.ini,
then named values under that subkey specify where in the registry you
will find the keys for the section. If the key you are looking for does
not exist as a named value, then there will be an unnamed value (shown
as ) that specifies the default location in the registry where
you will find the key.
If the section name specified by lpAppName does not exist as a named
value or as a subkey under myfile.ini, then there will be an unnamed
value (shown as ) under myfile.ini that specifies the default
location in the registry where you will find the keys for the section.
If there is no subkey for MYFILE.INI, or if there is no entry for the
section name, then look for the actual MYFILE.INI on the disk and read
its contents.
When looking at values in the registry that specify other registry
locations, there are several prefixes that change the behavior of the
.INI file mapping:
! - this character forces all writes to go both to the registry and to
the .INI file on disk.
- this character causes the registry value to be set to the value in
the Windows 3.1 .INI file when a new user logs in for the first time
after setup.
@ - this character prevents any reads from going to the .INI file on
disk if the requested data is not found in the registry.
USR: - this prefix stands for HKEY_CURRENT_USER, and the text after the
prefix is relative to that key.
SYS: - this prefix stands for HKEY_LOCAL_MACHINE\SOFTWARE, and the text
after the prefix is relative to that key.
See Also
Registry Overview, Registry Functions, GetProfileString,
WritePrivateProfileString–
Christian Biesinger
Hi! I’m a signature virus! Copy me into your signature file to help me
spread!
DSS/DH ID: DFFE21F1 FP: E60D 24FC BBC5 97CE 5421 C0FE 311B 7F82 DFFE
21F1