none
WMI RRS feed

  • Question

  • Hi,

    I am investigating for what WMI can do.

    Regarding this I have some question as mentioned below:

    1. What data can be read via WMI?
    2. How to write data into WMI from our applications?
    4. What events can be triggered on?
    5. How to provide our own events?

    I have got lot of information here on MSDN but not exact answers to these questions.

    Can anybody provide me some information specific to above given questions?

    Thanks in advance.

    - Prasad.

    Monday, April 23, 2012 4:32 AM

All replies

  • Hi

    Most of your question I believe you can find the detail information from MSDN Library: Using WMI.

    I also suggest you try a tool called WMI creator first, which you can used to test the WMI feature before you use in your code, http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=8572.


    Yi Feng Li [MSFT]
    MSDN Community Support | Feedback to us

    Monday, April 23, 2012 6:08 AM
    Moderator
  • Hello,

    Would you mind letting me know the
    result of the suggestions? If you need further assistance, feel free to let me
    know. I will be more than happy to be of assistance.

    Yi


    Yi Feng Li [MSFT]
    MSDN Community Support | Feedback to us

    Thursday, April 26, 2012 6:24 AM
    Moderator
  • Uzyskać program odtwarzający strukturę firmy. Jak widać, mamy w każdym wierszu trzy wartości. Są to: nazwa działu/stanowiska, nazwa działu nadrzędnego (firma jest korzeniem, więc ma -) oraz informacja, czy jest to dział (d), czy stanowisko (s). Należało użyć kontenera std::vector. Jak widać, kolejność umieszczonych danych w pliku mogła być dowolna - jedyny warunek, jaki musiał być spełniony, to to, że dział nadrzędny musiał być umieszczony przed wszystkim, co było mu podrzędne. Dodatkowo, należało zamienić na potrzeby wyświetlania informacji wszystkie "_" w nazwach działów i stanowisk na spacje, oraz wyświetlić dane w odpowiednich formatach (dla działu: "+ [Nazwa działu]", dla stanowiska "* Stanowisko"), a także pokazać, który dział jest nadrzędny, dla danego działu lub stanowiska, poprzez odpowiednie użycie tabulacji/spacji. Ogólnie, dla podanego przeze mnie pliku miało to wyglądać tak:

    Nazwa_zakladu - d
    Kierownik Nazwa_zakladu s
    Dzial_sprzedazy Nazwa_zakladu d
    Dzial_reklamy Nazwa_zakladu d
    Kierownik Dzial_sprzedazy s
    Zastepca_kierownika Dzial_sprzedazy s
    Dzial_zazalen Dzial_reklamy d
    Kierownik Dzial_zazalen s
    Pracownik_1 Dzial_sprzedazy s
    Pracownik_2 Dzial_sprzedazy s
    Pracownik_3 Dzial_reklamy s
    Pracownik_4 Dzial_reklamy s
    Pracownik_1 Dzial_zazalen s
    Pracownik_2 Dzial_zazalen s
    Pracownik_3 Dzial_sprzedazy s
    Pracownik_4 Dzial_sprzedazy s


    #include "stdafx.h" 
    #include <iostream> 
    #include <vector> 
    #include <string> 
    #include <conio.h> 
    
    using namespace std; 
    
    class Wezel { 
        string _nazwa, _nazwaSformatowana; 
        vector<Wezel *> _dzieci; 
    public: 
        Wezel(const string Nazwa, const char Typ); 
        ~Wezel(); 
        void DodajWezel(const string Nazwa, const string NazwaRodzica, const char Typ); 
        void const Wypisz(const int Poziom = 0); 
    }; 
    
    Wezel::Wezel(const string Nazwa, const char Typ) : 
        _nazwa(Nazwa) { 
        _nazwaSformatowana = Nazwa; 
        for (int i = 0; i < _nazwaSformatowana.size(); ++i) 
            if (_nazwaSformatowana[i] == '_') _nazwaSformatowana[i] = ' '; 
        if (Typ == 'd') _nazwaSformatowana = "+ [" + _nazwaSformatowana + "]"; 
        else if (Typ == 's') _nazwaSformatowana = "* " + _nazwaSformatowana; 
    } 
    
    Wezel::~Wezel() { 
        for (int i = 0; i < _dzieci.size(); ++i) delete _dzieci[i]; 
    } 
    
    void Wezel::DodajWezel(const string Nazwa, const string NazwaRodzica, const char Typ) { 
        if (NazwaRodzica == _nazwa) _dzieci.push_back(new Wezel(Nazwa, Typ)); 
        else for (int i = 0; i < _dzieci.size(); ++i) _dzieci[i]->DodajWezel(Nazwa, NazwaRodzica, Typ); 
    } 
    
    void const Wezel::Wypisz(const int Poziom) { 
        for (int i = 0; i < Poziom; ++i) cout << "\t"; 
        cout << _nazwaSformatowana << endl; 
        for (int i = 0; i < _dzieci.size(); ++i) _dzieci[i]->Wypisz(Poziom+1); 
    } 
    
    int _tmain(int argc, _TCHAR* argv[]) 
    { 
        FILE * plik = fopen("dane.txt", "r"); 
        if (plik) { 
            char nazwa[50], rodzic[50], typ; 
            fscanf(plik, "%s %s %c\n", nazwa, rodzic, &typ); 
            Wezel Korzen(nazwa, typ); 
            while (!feof(plik)) { 
                fscanf(plik, "%s %s %c\n", nazwa, rodzic, &typ); 
                Korzen.DodajWezel(nazwa, rodzic, typ); 
            } 
            Korzen.Wypiz(); 
            fclose(plik); 
        }  
        _getch(); 
        return 0; 
    } 

        

    #include "stdafx.h"
    #include <iostream>
    #include <l> t
    #include <string>
    #include <conio.h>

    using namespace std;

    class Wezel {
        string _nazwa, _nazwaSformatowana;
        List<Wezel *> _dzieci;
    public:
        Wezel(const string Nazwa, const char Typ);
        ~Wezel();
        void DodajWezel(const string Nazwa, const string NazwaRodzica, const char Typ);
        void const Wypisz(const int Poziom = 0);
    };

    Wezel::Wezel(const string Nazwa, const char Typ) :
        _nazwa(Nazwa) {
        _nazwaSformatowana = Nazwa;
        for (int i = 0; i < _nazwaSformatowana.size(); ++i)
            if (_nazwaSformatowana[i] == '_') _nazwaSformatowana[i] = ' ';
        if (Typ == 'd') _nazwaSformatowana = "+ [" + _nazwaSformatowana + "]";
        else if (Typ == 's') _nazwaSformatowana = "* " + _nazwaSformatowana;
    }

    Wezel::~Wezel() {

        for (list<Wezel*>::iterator it=_dzieci.begin(); it!=_dzieci.end(); it++) delete *it;
    }

    void Wezel::DodajWezel(const string Nazwa, const string NazwaRodzica, const char Typ) {
        if (NazwaRodzica == _nazwa) _dzieci.push_back(new Wezel(Nazwa, Typ));
        else for (list<Wezel*>::iterator it=_dzieci.begin(); it!=_dzieci.end(); it++)  //reszta for w ten sposob
            (*it)->DodajWezel(Nazwa, NazwaRodzica, Typ);
    }

    #include "stdafx.h" 
    #include <iostream> 
    #include <l> t
    #include <string> 
    #include <conio.h> 
    
    using namespace std; 
    
    class Wezel { 
        string _nazwa, _nazwaSformatowana; 
        List<Wezel *> _dzieci; 
    public: 
        Wezel(const string Nazwa, const char Typ); 
        ~Wezel(); 
        void DodajWezel(const string Nazwa, const string NazwaRodzica, const char Typ); 
        void const Wypisz(const int Poziom = 0); 
    }; 
    
    Wezel::Wezel(const string Nazwa, const char Typ) : 
        _nazwa(Nazwa) { 
        _nazwaSformatowana = Nazwa; 
        for (int i = 0; i < _nazwaSformatowana.size(); ++i) 
            if (_nazwaSformatowana[i] == '_') _nazwaSformatowana[i] = ' '; 
        if (Typ == 'd') _nazwaSformatowana = "+ [" + _nazwaSformatowana + "]"; 
        else if (Typ == 's') _nazwaSformatowana = "* " + _nazwaSformatowana; 
    } 
    
    Wezel::~Wezel() { 
    	
        for (list<Wezel*>::iterator it=_dzieci.begin(); it!=_dzieci.end(); it++) delete *it; 
    } 
    
    void Wezel::DodajWezel(const string Nazwa, const string NazwaRodzica, const char Typ) { 
        if (NazwaRodzica == _nazwa) _dzieci.push_back(new Wezel(Nazwa, Typ)); 
        else for (list<Wezel*>::iterator it=_dzieci.begin(); it!=_dzieci.end(); it++)  //reszta for w ten sposob
    		(*it)->DodajWezel(Nazwa, NazwaRodzica, Typ); 
    } 
    



    • Edited by Samarytanin Thursday, April 26, 2012 7:35 AM
    Thursday, April 26, 2012 7:03 AM
  • Thanks Yi Feng Li, I am testing with WMI Code Creator. Let me understand it first and then I will let you know about problem I am facing if any. Thanks a lot for your assistance.
    Wednesday, May 2, 2012 9:10 AM