次の方法で共有


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

参照

関連項目

CWinApp クラス

階層図

CWinApp::GetProfileInt

CWinApp::GetProfileString