summaryrefslogtreecommitdiff
path: root/network/trans/WFPSampler/lib/HelperFunctions_Registry.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'network/trans/WFPSampler/lib/HelperFunctions_Registry.cpp')
-rw-r--r--network/trans/WFPSampler/lib/HelperFunctions_Registry.cpp232
1 files changed, 232 insertions, 0 deletions
diff --git a/network/trans/WFPSampler/lib/HelperFunctions_Registry.cpp b/network/trans/WFPSampler/lib/HelperFunctions_Registry.cpp
new file mode 100644
index 00000000..c933587c
--- /dev/null
+++ b/network/trans/WFPSampler/lib/HelperFunctions_Registry.cpp
@@ -0,0 +1,232 @@
+////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2012 Microsoft Corporation. All Rights Reserved.
+//
+// Module Name:
+// HelperFunctions_Registry.cpp
+//
+// Abstract:
+// This module contains functions which simplify registry operations.
+//
+// Private Functions:
+//
+// Public Functions:
+// HlprRegistryDeleteKey(),
+// HlprRegistryDeleteValue(),
+// HlprRegistryGetValue(),
+// HlprRegistrySetValue(),
+//
+// Author:
+// Dusty Harper (DHarper)
+//
+// Revision History:
+//
+// [ Month ][Day] [Year] - [Revision]-[ Comments ]
+// May 01, 2012 - 1.0 - Creation
+//
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+#include "HelperFunctions_Include.h" /// .
+
+/**
+ @helper_function="HlprRegistryDeleteValue"
+
+ Purpose: Delete the Value from the specified Registry key. <br>
+ <br>
+ Notes: <br>
+ <br>
+ MSDN_Ref: HTTP://MSDN.Microsoft.com/En-Us/Library/Windows/Desktop/MS724851.aspx <br>
+*/
+_Success_(return == NO_ERROR)
+UINT32 HlprRegistryDeleteValue(_In_ HKEY hKey,
+ _In_opt_ PWSTR pSubKey,
+ _In_ PWSTR pValueName)
+{
+ UINT32 status = NO_ERROR;
+ HKEY keyHandle = 0;
+
+ if(pSubKey)
+ {
+ UINT32 dispositionValue = 0;
+
+ status = RegCreateKeyEx(hKey,
+ pSubKey,
+ 0,
+ 0,
+ REG_OPTION_NON_VOLATILE,
+ KEY_WRITE,
+ 0,
+ &keyHandle,
+ (LPDWORD)&dispositionValue);
+ if(status != NO_ERROR)
+ {
+ HlprLogError(L"HlprRegistryDeleteValue : RegCreateKeyEx() [status: %#x][subKey: %s]",
+ status,
+ pSubKey);
+
+ HLPR_BAIL;
+ }
+ }
+ else
+ keyHandle = hKey;
+
+ status = RegDeleteValue(keyHandle,
+ pValueName);
+ if(status != NO_ERROR)
+ {
+ if(status != ERROR_FILE_NOT_FOUND)
+ {
+ HlprLogError(L"HlprRegistryDeleteValue : RegDeleteValue() [status: %#x][Value: %s%s%s]",
+ status,
+ pSubKey ? pSubKey : L"",
+ pSubKey ? L"\\" : L"",
+ pValueName);
+
+ HLPR_BAIL;
+ }
+
+ status = NO_ERROR;
+ }
+
+ HLPR_BAIL_LABEL:
+
+ return status;
+}
+
+
+/**
+ @helper_function="HlprRegistrySetValue"
+
+ Purpose: Opens a handle to the key, creates the appropriate value, and closes the key. <br>
+ <br>
+ Notes: <br>
+ <br>
+ MSDN_Ref: HTTP://MSDN.Microsoft.com/En-Us/Library/Windows/Desktop/MS724844.aspx <br>
+ HTTP://MSDN.Microsoft.com/En-Us/Library/Windows/Desktop/MS724923.aspx <br>
+*/
+_Success_(return == NO_ERROR)
+UINT32 HlprRegistrySetValue(_In_ HKEY hKey,
+ _In_ PWSTR pSubKey,
+ _In_ UINT32 type,
+ _In_opt_ PWSTR pValueName,
+ _In_reads_bytes_(valueSize) BYTE* pValue,
+ _In_ UINT32 valueSize)
+{
+ UINT32 status = NO_ERROR;
+ HKEY keyHandle = 0;
+ UINT32 dispositionValue = 0;
+
+ status = RegCreateKeyEx(hKey,
+ pSubKey,
+ 0,
+ 0,
+ REG_OPTION_NON_VOLATILE,
+ KEY_WRITE,
+ 0,
+ &keyHandle,
+ (LPDWORD)&dispositionValue);
+ if(status != NO_ERROR)
+ {
+ HlprLogError(L"HlprRegistrySetValue : RegCreateKeyEx() [status: %#x][subKey: %s]",
+ status,
+ pSubKey);
+
+ HLPR_BAIL;
+ }
+
+ status = RegSetValueEx(keyHandle,
+ pValueName,
+ 0,
+ type,
+ pValue,
+ valueSize);
+ if(status != NO_ERROR)
+ {
+ HlprLogError(L"HlprRegistrySetValue : RegSetValueEx() [status: %#x][valueName: %s]",
+ status,
+ pValueName ? pValueName : L"(Default)");
+
+ HLPR_BAIL;
+ }
+
+ HLPR_BAIL_LABEL:
+
+ RegCloseKey(keyHandle);
+
+ return status;
+};
+
+/**
+ @helper_function="HlprRegistryGetValue"
+
+ Purpose: Retrieves a value from the registry. <br>
+ <br>
+ Notes: <br>
+ <br>
+ MSDN_Ref: HTTP://MSDN.Microsoft.com/En-Us/Library/Windows/Desktop/MS724868.aspx <br>
+*/
+_Success_(return == NO_ERROR)
+UINT32 HlprRegistryGetValue(_In_ HKEY hKey,
+ _In_ PWSTR pSubKey,
+ _In_opt_ PWSTR pValueName,
+ _Inout_ REGISTRY_VALUE* pRegValue)
+{
+ UINT32 status = NO_ERROR;
+
+ status = RegGetValue(hKey,
+ pSubKey,
+ pValueName,
+ RRF_RT_ANY,
+ (LPDWORD)&(pRegValue->type),
+ (PVOID)pRegValue->pBuffer,
+ (LPDWORD)&(pRegValue->size));
+ if(status != NO_ERROR)
+ {
+ HlprLogError(L"HlprRegistryGetValue : RegGetValue() [status: %#x][Value: %s\\%s]",
+ status,
+ pSubKey,
+ pValueName ? pValueName : L"(Default)");
+
+ HLPR_BAIL_ON_FAILURE(status);
+ }
+
+ HLPR_BAIL_LABEL:
+
+ return status;
+}
+
+/**
+ @helper_function="HlprRegistryDeleteKey"
+
+ Purpose: Delete the SubKey from the Registry. <br>
+ <br>
+ Notes: <br>
+ <br>
+ MSDN_Ref: HTTP://MSDN.Microsoft.com/En-Us/Library/Windows/Desktop/MS724845.aspx <br>
+*/
+_Success_(return == NO_ERROR)
+UINT32 HlprRegistryDeleteKey(_In_ HKEY hKey,
+ _In_ PWSTR pSubKey)
+{
+ UINT32 status = NO_ERROR;
+
+ status = RegDeleteKey(hKey,
+ pSubKey);
+ if(status != NO_ERROR)
+ {
+ if(status != ERROR_FILE_NOT_FOUND)
+ {
+ HlprLogError(L"HlprRegistryDeleteKey : RegDeleteKey() [status: %#x][subKey: %s]",
+ status,
+ pSubKey);
+
+ HLPR_BAIL;
+ }
+
+ status = NO_ERROR;
+ }
+
+ HLPR_BAIL_LABEL:
+
+ return status;
+}