BOOL CRegistry::EnumerateKeys(const DWORD subkey_index, CString& subkey_name, CString& class_name) { TCHAR subkey_name_string[ 2048 ]; TCHAR class_name_string[ 2048 ]; DWORD size_of_subkey_name_string = DIMENSION_OF(subkey_name_string) - 1; DWORD size_of_class_name_string = DIMENSION_OF(class_name_string ) - 1; ::ZeroMemory(subkey_name_string, sizeof(subkey_name_string)); ::ZeroMemory(class_name_string, sizeof(class_name_string )); m_ErrorCode = ::RegEnumKeyEx(m_KeyHandle, subkey_index, subkey_name_string, &size_of_subkey_name_string, NULL, class_name_string, &size_of_class_name_string, &m_LastWriteTime); if (m_ErrorCode == ERROR_SUCCESS) { subkey_name = subkey_name_string; class_name = class_name_string; return(TRUE); } else { return(FALSE); } }
int main(void) { int arr1[] = {2, 4, 5, 8}; int arr2[] = {1, 0, 4, 6}; int arr3[DIMENSION_OF(arr1)]; dot_product(arr3, arr1, arr2, DIMENSION_OF(arr1)); print_iseq(stdout, arr3, BEYOND(arr3)); return 0; }
BOOL CRegistry::QueryInfo(void) { TCHAR class_name[ 2048 ]; ::ZeroMemory(class_name, sizeof(class_name)); DWORD size_of_class_name = DIMENSION_OF(class_name) - 1; m_ErrorCode = ::RegQueryInfoKey(m_KeyHandle, class_name, &size_of_class_name, (LPDWORD) NULL, &m_NumberOfSubkeys, &m_LongestSubkeyNameLength, &m_LongestClassNameLength, &m_NumberOfValues, &m_LongestValueNameLength, &m_LongestValueDataLength, &m_SecurityDescriptorLength, &m_LastWriteTime); if (m_ErrorCode == ERROR_SUCCESS) { m_ClassName = class_name; return(TRUE); } else { return(FALSE); } }
BOOL CRegistry::EnumerateValues(const DWORD value_index, CString& name_of_value, KeyValueTypes& type_code, LPBYTE data_buffer, DWORD& size_of_data_buffer) { /* ** data_buffer and size_of_data_buffer can be NULL */ DWORD temp_type_code = type_code; TCHAR temp_name[ 2048 ]; ::ZeroMemory(temp_name, sizeof(temp_name)); DWORD temp_name_size = DIMENSION_OF(temp_name); // We were passed a pointer, do not trust it try { m_ErrorCode = ::RegEnumValue(m_KeyHandle, value_index, temp_name, &temp_name_size, NULL, &temp_type_code, data_buffer, &size_of_data_buffer); if (m_ErrorCode == ERROR_SUCCESS) { type_code = (KeyValueTypes) temp_type_code; name_of_value = temp_name; return(TRUE); } else { return(FALSE); } } catch(...) { m_ErrorCode = ERROR_EXCEPTION_IN_SERVICE; return(FALSE); } }