SHOpenRegStream レジストリ値のIStreamインターフェースを取得

Cの宣言:

IStream *SHOpenRegStream(
	HKEY hKey,
	LPCTSTR SubKeyName,
	LPCTSTR ValueName,
	DWORD Mode);

説明:

hKeyで指定されたレジストリキーのSubKeyNameで指定されたサブキーにあるValueNameで指定されたレジストリ値のIStreamインターフェースを取得する。

引数の意味は以下の通り。
hKey レジストリキーのハンドル。
SubKeyName サブキーの名前。
ValueName レジストリ値の名前。
Mode IStreamを取得する際のアクセスモード。後述の表を参照。

Modeに指定可能な値は以下のいずれかのフラグである。
STGM_READ 読み込みアクセスでオープンする。
STGM_WRITE 書き込みアクセスでオープンする。
STGM_READWRITE 読み書きアクセスでオープンする。

戻り値は、IStreamへのポインタである。関数の実行に失敗した場合、NULLが返される。

Cのサンプル:

SHOpenRegStreamを使用して、HKEY_CURRENT_USERの"Software\masapico\test"というキーにある"stream"という名前のレジストリ値のIStreamインターフェースを取得し、"hello world"という文字列をストリームへ書き込む。
void TestRegStream(void)
{
	HKEY hKey;
	HRESULT hr;
	IStream *pStream = NULL;
	char *StreamData = "hello world";

	// 初期化
	OleInitialize(NULL);

	// レジストリキーのオープン
	RegOpenKeyEx(
		HKEY_CURRENT_USER,
		"Software\\masapico",
		0,
		KEY_ALL_ACCESS,
		&hKey);

	pStream = SHOpenRegStream(
		hKey,
		"test",
		"stream",
		STGM_READWRITE);

	if(pStream == NULL) printf("err: %d\n", GetLastError());

	// データの書き込み
	hr = pStream->Write(StreamData, lstrlen(StreamData) + 1, NULL);
	printf("%08x\n", hr);
	
	// 終了
	if(pStream != NULL) pStream->Release();
	RegCloseKey(hKey);
	OleUninitialize();
}

(original text:1999/09/05 更新)

本ドキュメントの内容は保証しません。本ドキュメントによって生じた結果について、一切の責任を負いません。