Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Win32_AssociatedProcessorMemory - некоторые поля равны NULL

6.0K
16 декабря 2009 года
spyrytus
51 / / 14.07.2006
Здравствуйте.
Я пытаюсь использовать класс Win32_AssociatedProcessorMemory, пишу запрос:
 
Код:
select Dependent from Win32_AssociatedProcessorMemory

и в результате - ничего не получаю, кроме заполненного поля bstrVal
Цитата:
VARIANT типа данных и содержит оно - следующим значением:
\\\\Microsoft-Computer\root\cimv2:Win32_CacheMemory.DeviceID="Cache Memory 0"


Что с ним делать - я привел ниже (данный метод, реализует создание и заполнение данными HashTable), но есть одна большааааая проблема ... :(

Код:
bool TCPUInfo::FillMap( IWbemClassObject *pEnumerator, IWbemServices *pSvc )
{
        bool result = false;
        SAFEARRAY *psaNames = NULL;
        long lLower, lUpper;
        HRESULT hRes = pEnumerator->GetNames(
            NULL,
            WBEM_FLAG_ALWAYS | WBEM_FLAG_NONSYSTEM_ONLY,
            NULL,
            &psaNames );
        if ( !FAILED( hRes ) )
        {
            SafeArrayGetLBound( psaNames, 1, &lLower );
            SafeArrayGetUBound( psaNames, 1, &lUpper );
            for ( long i = lLower; i <= lUpper; i++ )
            {
                    BSTR pName = { 0 };
                    hRes = SafeArrayGetElement( psaNames, &i, &pName );
                    if ( !FAILED( hRes ) )
                    {
                            VARIANT *vrProp = new VARIANT;
                            memset( vrProp, 0x00, sizeof( VARIANT ) );
                            hRes = pEnumerator->Get(
                                pName,
                                0,
                                vrProp,
                                0,
                                0 );
                            if ( !FAILED( hRes ) && pSvc == NULL && !( *( Variant* )vrProp ).IsArray() )
                                m_Map->insert( Context( pName, VarToStr( *( Variant* )vrProp ) ) );
                            if ( !FAILED( hRes ) && pSvc != NULL )
                            {
                                IWbemClassObject *obj = NULL;
                                hRes = pSvc->GetObject(
                                        VarToStr( *( Variant* )vrProp ).c_str(),
                                        WBEM_FLAG_DIRECT_READ,
                                        NULL,
                                        &obj,
                                        NULL );
                                if ( !FAILED( hRes ) ) FillMap( obj, NULL );
                            }
                            delete vrProp;
                            vrProp = NULL;
                    }
            }
        }
        return result;
}

Некоторые поля (в общем случае - около 50%) получаются со значением NULL ! - что делать, почему не заполняются эти поля ? :eek:
В качестве WMI класса - использую Win32_AssociatedProcessorMemory и как раз в нем, поле BusSpeed - пустое.
Если кто встречался с проблемой - подскажите, как исправить ?
Заранее благодарен.
14
17 декабря 2009 года
Phodopus
3.3K / / 19.06.2008
Найти драйвер предоставляющий WMI требуемую инфорацию...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог