Code/Resource
Windows Develop
Linux-Unix program
Internet-Socket-Network
Web Server
Browser Client
Ftp Server
Ftp Client
Browser Plugins
Proxy Server
Email Server
Email Client
WEB Mail
Firewall-Security
Telnet Server
Telnet Client
ICQ-IM-Chat
Search Engine
Sniffer Package capture
Remote Control
xml-soap-webservice
P2P
WEB(ASP,PHP,...)
TCP/IP Stack
SNMP
Grid Computing
SilverLight
DNS
Cluster Service
Network Security
Communication-Mobile
Game Program
Editor
Multimedia program
Graph program
Compiler program
Compress-Decompress algrithms
Crypt_Decrypt algrithms
Mathimatics-Numerical algorithms
MultiLanguage
Disk/Storage
Java Develop
assembly language
Applications
Other systems
Database system
Embeded-SCM Develop
FlashMX/Flex
source in ebook
Delphi VCL
OS Develop
MiddleWare
MPI
MacOS develop
LabView
ELanguage
Software/Tools
E-Books
Artical/Document
registry.h
Package: MF.zip [view]
Upload User: geng8029
Upload Date: 2021-01-30
Package Size: 187k
Code Size: 7k
Category:
Audio program
Development Platform:
Visual C++
- //////////////////////////////////////////////////////////////////////////
- //
- // Registry.h: Registry helpers.
- //
- // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
- // ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
- // THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
- // PARTICULAR PURPOSE.
- //
- // Copyright (c) Microsoft Corporation. All rights reserved.
- //
- //////////////////////////////////////////////////////////////////////////
- #pragma once
- namespace MediaFoundationSamples
- {
- #ifndef CHARS_IN_GUID
- const DWORD CHARS_IN_GUID = 39;
- #endif
- // Forward declares
- HRESULT RegisterObject(HMODULE hModule, const GUID& guid, const TCHAR *sDescription, const TCHAR *sThreadingModel);
- HRESULT UnregisterObject(const GUID& guid);
- HRESULT CreateObjectKeyName(const GUID& guid, TCHAR *sName, DWORD cchMax);
- HRESULT SetKeyValue(HKEY hKey, const TCHAR *sName, const TCHAR *sValue);
- ///////////////////////////////////////////////////////////////////////
- // Name: RegisterObject
- // Desc: Creates the registry entries for a COM object.
- //
- // guid: The object's CLSID
- // sDescription: Description of the object
- // sThreadingMode: Threading model. e.g., "Both"
- ///////////////////////////////////////////////////////////////////////
- inline HRESULT RegisterObject(HMODULE hModule, const GUID& guid, const TCHAR *sDescription, const TCHAR *sThreadingModel)
- {
- HKEY hKey = NULL;
- HKEY hSubkey = NULL;
- TCHAR achTemp[MAX_PATH];
- // Create the name of the key from the object's CLSID
- HRESULT hr = CreateObjectKeyName(guid, achTemp, MAX_PATH);
- // Create the new key.
- if (SUCCEEDED(hr))
- {
- LONG lreturn = RegCreateKeyEx(
- HKEY_CLASSES_ROOT,
- (LPCTSTR)achTemp, // subkey
- 0, // reserved
- NULL, // class string (can be NULL)
- REG_OPTION_NON_VOLATILE,
- KEY_ALL_ACCESS,
- NULL, // security attributes
- &hKey,
- NULL // receives the "disposition" (is it a new or existing key)
- );
- hr = __HRESULT_FROM_WIN32(lreturn);
- }
- // The default key value is a description of the object.
- if (SUCCEEDED(hr))
- {
- hr = SetKeyValue(hKey, NULL, sDescription);
- }
- // Create the "InprocServer32" subkey
- if (SUCCEEDED(hr))
- {
- const TCHAR *sServer = TEXT("InprocServer32");
- LONG lreturn = RegCreateKeyEx(hKey, sServer, 0, NULL,
- REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hSubkey, NULL);
- hr = __HRESULT_FROM_WIN32(lreturn);
- }
- // The default value for this subkey is the path to the DLL.
- // Get the name of the module ...
- if (SUCCEEDED(hr))
- {
- DWORD res = GetModuleFileName(hModule, achTemp, MAX_PATH);
- if (res == 0)
- {
- hr = __HRESULT_FROM_WIN32(GetLastError());
- }
- if (res == MAX_PATH)
- {
- hr = E_FAIL; // buffer too small
- }
- }
- // ... and set the default key value.
- if (SUCCEEDED(hr))
- {
- hr = SetKeyValue(hSubkey, NULL, achTemp);
- }
- // Add a new value to the subkey, for "ThreadingModel" = <threading model>
- if (SUCCEEDED(hr))
- {
- hr = SetKeyValue(hSubkey, TEXT("ThreadingModel"), sThreadingModel);
- }
- // close hkeys
- if (hSubkey != NULL)
- {
- RegCloseKey( hSubkey );
- }
- if (hKey != NULL)
- {
- RegCloseKey( hKey );
- }
- return hr;
- }
- ///////////////////////////////////////////////////////////////////////
- // Name: UnregisterObject
- // Desc: Deletes the registry entries for a COM object.
- //
- // guid: The object's CLSID
- ///////////////////////////////////////////////////////////////////////
- inline HRESULT UnregisterObject(const GUID& guid)
- {
- TCHAR achTemp[MAX_PATH];
- HRESULT hr = CreateObjectKeyName(guid, achTemp, MAX_PATH);
- if (SUCCEEDED(hr))
- {
- // Delete the key recursively.
- DWORD res = RegDeleteTree(HKEY_CLASSES_ROOT, achTemp);
- if (res == ERROR_SUCCESS)
- {
- hr = S_OK;
- }
- else
- {
- hr = __HRESULT_FROM_WIN32(res);
- }
- }
- return hr;
- }
- ///////////////////////////////////////////////////////////////////////
- // Name: CreateObjectKeyName
- // Desc: Converts a CLSID into a string with the form "CLSID{clsid}"
- ///////////////////////////////////////////////////////////////////////
- inline HRESULT CreateObjectKeyName(const GUID& guid, TCHAR *sName, DWORD cchMax)
- {
- // convert CLSID uuid to string
- OLECHAR szCLSID[CHARS_IN_GUID];
- HRESULT hr = StringFromGUID2(guid, szCLSID, CHARS_IN_GUID);
- if (FAILED(hr))
- {
- return hr;
- }
- // Create a string of the form "CLSID{clsid}"
- return StringCchPrintf(sName, cchMax, TEXT("CLSID\%ls"), szCLSID);
- }
- ///////////////////////////////////////////////////////////////////////
- // Name: SetKeyValue
- // Desc: Sets a string value (REG_SZ) for a registry key
- //
- // hKey: Handle to the registry key.
- // sName: Name of the value. Use NULL for the default value.
- // sValue: The string value.
- ///////////////////////////////////////////////////////////////////////
- inline HRESULT SetKeyValue(HKEY hKey, const TCHAR *sName, const TCHAR *sValue)
- {
- size_t cch = 0;
- HRESULT hr = StringCchLength(sValue, MAXLONG, &cch);
- if (SUCCEEDED(hr))
- {
- // Size must include NULL terminator, which is not counted in StringCchLength
- DWORD cbData = ((DWORD)cch + 1) * sizeof(TCHAR);
- // set description string
- LONG ret = RegSetValueEx(hKey, sName, 0, REG_SZ, (BYTE*)sValue, cbData);
- if (ret == ERROR_SUCCESS)
- {
- hr = S_OK;
- }
- else
- {
- hr = HRESULT_FROM_WIN32(ret);
- }
- }
- return hr;
- }
- }; // namespace MediaFoundationSamples