示例#1
0
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);
    }
}
示例#2
0
文件: Ex10.c 项目: marrusian/C
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;
}
示例#3
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);
    }
}
示例#4
0
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);
    }
}