Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

296 lines
6.9 KiB

/* $Header: "%n;%v %f LastEdit=%w Locker=%l" */
/* "PROFLSPT.C;2 23-Dec-92,17:54:44 LastEdit=IGOR Locker=IGOR" */
/************************************************************************
* Copyright (c) Wonderware Software Development Corp. 1991-1992. *
* All Rights Reserved. *
*************************************************************************/
/* $History: Beg
$History: End */
#include "api1632.h"
#define NOCOMM
#include <stdlib.h>
#include <string.h>
#include "windows.h"
#include "tmpbuf.h"
#include "proflspt.h"
#define NDDE_REG_PARAMETERS "Software\\Microsoft\\NetDDE\\Parameters"
BOOL
WINAPI
TestPrivateProfile(
LPCSTR lpszSection,
LPCSTR lpszKey,
LPCSTR lpszFile )
{
HKEY hKey;
LONG ret;
char szKeySpec[ 1024 ];
DWORD cbId = 1024;
DWORD dwType = 0;
wsprintf( szKeySpec, "%s\\%s", NDDE_REG_PARAMETERS, lpszSection );
ret = RegOpenKeyEx( HKEY_LOCAL_MACHINE,
szKeySpec,
0,
KEY_READ,
&hKey );
if( ret == ERROR_SUCCESS ) {
ret = RegQueryValueEx( hKey,
(LPSTR)lpszKey,
NULL,
&dwType,
(LPBYTE)szKeySpec,
&cbId );
RegCloseKey( hKey );
}
return(ret == ERROR_SUCCESS);
}
BOOL
WINAPI
MyWritePrivateProfileString(
LPCSTR lpszSection,
LPCSTR lpszKey,
LPCSTR lpszString,
LPCSTR lpszFile )
{
HKEY hKey;
int ret = -1;
char szKeySpec[ 1024 ];
WCHAR szValueBuf[512];
WCHAR szKeyBuf[256];
DWORD cbSize;
DWORD dwDisposition;
wsprintf( szKeySpec, "%s\\%s", NDDE_REG_PARAMETERS, lpszSection );
cbSize = MultiByteToWideChar( CP_ACP, MB_PRECOMPOSED,
lpszString, -1,
(LPWSTR)szValueBuf, 512);
if (cbSize) {
ret = RegCreateKeyEx( HKEY_LOCAL_MACHINE,
szKeySpec,
0,
"NetDDEParameter",
REG_OPTION_NON_VOLATILE,
KEY_ALL_ACCESS,
(LPSECURITY_ATTRIBUTES) NULL,
&hKey,
&dwDisposition );
if( ret == ERROR_SUCCESS ) {
MultiByteToWideChar( CP_ACP, MB_PRECOMPOSED,
lpszKey, -1,
(LPWSTR)szKeyBuf, 256);
ret = RegSetValueExW( hKey,
(LPWSTR)szKeyBuf,
(DWORD_PTR)NULL,
REG_SZ,
(LPBYTE)szValueBuf,
cbSize * sizeof(WCHAR) );
RegCloseKey( hKey );
}
}
return( ret == ERROR_SUCCESS );
}
BOOL
FAR PASCAL
MyWritePrivateProfileInt(
LPSTR lpAppName,
LPSTR lpKeyName,
int nValue,
LPSTR lpFileName )
{
HKEY hKey;
int ret;
char szKeySpec[ 1024 ];
DWORD dwDisposition;
wsprintf( szKeySpec, "%s\\%s", NDDE_REG_PARAMETERS, lpAppName );
ret = RegCreateKeyEx( HKEY_LOCAL_MACHINE,
szKeySpec,
0,
"NetDDEParameter",
REG_OPTION_NON_VOLATILE,
KEY_ALL_ACCESS,
(LPSECURITY_ATTRIBUTES) NULL,
&hKey,
&dwDisposition );
if( ret == ERROR_SUCCESS ) {
ret = RegSetValueEx( hKey,
(LPSTR)lpKeyName,
(DWORD_PTR)NULL,
REG_DWORD,
(LPBYTE)&nValue,
sizeof(nValue) );
RegCloseKey( hKey );
}
return( ret == ERROR_SUCCESS );
}
BOOL
FAR PASCAL
WritePrivateProfileLong(
LPSTR lpAppName,
LPSTR lpKeyName,
LONG lValue,
LPSTR lpFileName )
{
return( MyWritePrivateProfileInt( lpAppName, lpKeyName,
lValue, lpFileName ) );
}
UINT
WINAPI
MyGetPrivateProfileInt(
LPCSTR lpszSection,
LPCSTR lpszKey,
INT dwDefault,
LPCSTR lpszFile )
{
HKEY hKey;
int ret;
char szKeySpec[ 1024 ];
BOOL bRetrieved = FALSE;
DWORD dwValue;
DWORD cbId = sizeof(dwValue);
DWORD dwType = 0;
wsprintf( szKeySpec, "%s\\%s", NDDE_REG_PARAMETERS, lpszSection );
ret = RegOpenKeyEx( HKEY_LOCAL_MACHINE,
szKeySpec,
0,
KEY_READ,
&hKey );
if( ret == ERROR_SUCCESS ) {
ret = RegQueryValueEx( hKey,
(LPSTR)lpszKey,
NULL,
&dwType,
(LPBYTE)&dwValue,
&cbId );
if( ret == ERROR_SUCCESS ) {
if( dwType == REG_DWORD ) {
bRetrieved = TRUE;
}
}
RegCloseKey( hKey );
}
if( bRetrieved ) {
return( dwValue );
} else {
return( dwDefault );
}
}
DWORD
WINAPI
MyGetPrivateProfileString(
LPCSTR lpszSection,
LPCSTR lpszKey,
LPCSTR lpszDefault,
LPSTR lpszReturnBuffer,
DWORD cbReturnBuffer,
LPCSTR lpszFile )
{
HKEY hKey;
int ret;
char szKeySpec[ 1024 ];
WCHAR szKeyBuf[256];
WCHAR szValueBuf[512];
BOOL bRetrieved = FALSE;
DWORD cbId = 512*sizeof(WCHAR);
DWORD dwType = 0;
BOOL fWide;
wsprintf( szKeySpec, "%s\\%s", NDDE_REG_PARAMETERS, lpszSection );
ret = RegOpenKeyEx( HKEY_LOCAL_MACHINE,
szKeySpec,
0,
KEY_READ,
&hKey );
if( ret == ERROR_SUCCESS ) {
MultiByteToWideChar( CP_ACP, MB_PRECOMPOSED,
lpszKey, -1,
(LPWSTR)szKeyBuf, 256);
ret = RegQueryValueExW( hKey,
(LPWSTR)szKeyBuf,
NULL,
&dwType,
(LPBYTE)szValueBuf,
&cbId );
if (ret == ERROR_SUCCESS) {
if( dwType == REG_SZ ) {
cbId = WideCharToMultiByte(
CP_ACP,
WC_COMPOSITECHECK,
(LPWSTR) szValueBuf,
cbId / sizeof(WCHAR),
lpszReturnBuffer,
cbReturnBuffer,
NULL,
&fWide );
if (cbId) {
bRetrieved = TRUE;
}
}
}
RegCloseKey( hKey );
}
if( !bRetrieved ) {
strncpy( lpszReturnBuffer, lpszDefault, cbReturnBuffer );
}
if( cbReturnBuffer > 0 ) {
lpszReturnBuffer[cbReturnBuffer-1] = '\0';
}
return( lstrlen(lpszReturnBuffer) );
}
LONG
FAR PASCAL
GetPrivateProfileLong(
LPSTR lpAppName,
LPSTR lpKeyName,
LONG lDefault,
LPSTR lpFileName )
{
return( MyGetPrivateProfileInt( lpAppName, lpKeyName,
lDefault, lpFileName ) );
}