CWinApp::GetProfileBinary
アプリケーションのレジストリまたは .INI ファイルの指定のセクション内のエントリからバイナリ データを取得します。
BOOL GetProfileBinary(
LPCTSTR lpszSection,
LPCTSTR lpszEntry,
LPBYTE* ppData,
UINT* pBytes
);
パラメーター
lpszSection
エントリがあるセクションを指定する NULL で終わる文字列へのポインター。lpszEntry
値を取得するエントリを指定する NULL で終わる文字列へのポインター。ppData
データのアドレスを受け取るポインターへのポインター。pBytes
データのサイズ (バイト数) を受け取る UINT へのポインター。
戻り値
正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。
解説
このメンバー関数は、大文字と小文字を区別しないので、lpszSection パラメーターと lpszEntry パラメーターの文字列は大文字、小文字のどちらでもかまいません。
[!メモ]
GetProfileBinary は、バッファーを割り当て、そのアドレスを *ppData に返します。バッファーの解放は、呼び出し元が delete [] を使って行います。
セキュリティに関するメモ |
---|
この関数が返すデータは、NULL で終わるデータとは限らないため、呼び出し元で検証を行う必要があります。詳細については、「Avoiding Buffer Overruns」を参照してください。 |
使用例
CWinApp* pApp = AfxGetApp();
const TCHAR* pszKey = _T("My Section");
struct complex {
double re, im;
} myData = { 1.4142, -0.5 };
// Write the information to the registry.
pApp->WriteProfileBinary(pszKey, _T("ComplexData"), (LPBYTE)&myData,
sizeof(myData));
// Read the information from the registry.
complex* pData;
UINT n;
BOOL ret = pApp->GetProfileBinary(pszKey, _T("ComplexData"), (LPBYTE*)&pData,
&n);
ASSERT(ret);
ASSERT(n == sizeof(complex));
ASSERT(myData.re == pData->re);
ASSERT(myData.im == pData->im);
delete [] pData; // free the buffer
そのほかの例については、「CWinApp::WriteProfileBinary」を参照してください。
必要条件
ヘッダー: afxwin.h