Share via


ISpRegDataKey::SetKey (SAPI 5.3)

Microsoft Speech API 5.3

ISpRegDataKey::SetKey

ISpRegDataKey::SetKey sets the hive registry key (HKEY) to use for subsequent token operations.

  
    HRESULT SetKey(
   HKEY   hkey,
   BOOL   fReadOnly
);

Parameters

  • hkey
    [in] The registry key to use.
  • fReadOnly
    [in] Boolean flag setting the keys to read/write status. If TRUE, the registry is read only; FALSE sets it to read and write.

Return values

Value
S_OK
SPERR_ALREADY_INITIALIZED

Example

The following code snippet adds, tests and deletes a superfluous key from the speech registry.

  
// Declare local identifiers:
HRESULT                           hr = S_OK;
CComPtr<ISpRegDataKey>            cpSpRegDataKey;
CComPtr<ISpDataKey>               cpSpCreatedDataKey;
CComPtr<ISpDataKey>               cpSpDataKey;
CComPtr<ISpObjectTokenCategory>   cpSpCategory;
HKEY                              hkey;

// Create a bogus key under Voices.
hr = RegCreateKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Speech\\Voices\\bogus", 0, NULL, 0, KEY_READ | KEY_WRITE, NULL, &hkey;, NULL);

if (SUCCEEDED(hr))
{
   hr = cpSpRegDataKey.CoCreateInstance(CLSID_SpDataKey);
}

if (SUCCEEDED(hr))
{
   hr = cpSpRegDataKey->SetKey(hkey, false);
}

if (SUCCEEDED(hr))
{
   // Do not need to do RegCloseKey on this hkey;
   // the handle gets released inside SetKey().
   hkey = NULL;

   hr = cpSpRegDataKey->QueryInterface(&cpSpCreatedDataKey;);
}

if (SUCCEEDED(hr))
{
   // Delete this bogus key.
   hr = SpGetCategoryFromId(SPCAT_VOICES, &cpSpCategory;);
}

if (SUCCEEDED(hr))
{
   hr = cpSpCategory->GetDataKey(SPDKL_LocalMachine, &cpSpDataKey;);
}

if (SUCCEEDED(hr))
{
   hr = cpSpDataKey->DeleteKey(L"bogus");
}