CWinApp::GetProfileBinary
更新 : 2007 年 11 月
アプリケーションのレジストリまたは .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」を参照してください。
スマート デバイス開発者のためのメモ
CWinApp::SetRegistryKey を使用したレジストリに基づくバージョンのみが、Windows CE ベースのプロジェクトでサポートされます。
必要条件
ヘッダー : afxwin.h