STDMETHODIMP COrderRequest::PobierzTowarKatalog(BSTR *pbstrIDProduktu, 
                                                BSTR bstrDirection, 
                                                BSTR *pbstrNazwa produktu, 
                                                CURRENCY *pcurrCena, 
                                                int *piDostepnosc)
{
    IOrderModify*   m_pDoTest;  // Wskanik interfejsu
    HRESULT         hr;         // Wynik zapytania.
    MULTI_QI        mqi;        // Interfejs do zapytania.
    COSERVERINFO    pSInfo;     // Informacja o serwerze.

    AFX_MANAGE_STATE(AfxGetStaticModuleState())
    // Inicjalizuj wskanik interfejsu.
    m_pDoTest = NULL;

    // Inicjalizuj rodowisko COM.
    CoInitialize(NULL);

    // Inicjalizuj informacje o serwerze.
    pSInfo.pwszName = L"\\\\NTServer";
    pSInfo.pAuthInfo = NULL;

    // Inicjalizuj struktur wynikow.
    mqi.pIID = &IID_IOrderModify;
    mqi.pItf = NULL;
    mqi.hr = 0;

    // Utwrz instancj obiektu.
    hr = CoCreateInstanceEx(CLSID_ModyfikacjaZamowien, 
                            NULL, 
                            CLSCTX_ALL,
                            &pSInfo,
                            1, 
                            &mqi);

    // Wyjd, jeli utworzenie si nie powiodo.
    if (FAILED(hr))
    {
        // Klasa nie jest zarejestrowana.
        if (hr == REGDB_E_CLASSNOTREG)
            AfxMessageBox(Ta klasa nie jest zarejestrowana na serwerze.");
        // Jeden lub wicej niepoprawnych argumentw.
        if (hr == E_INVALIDARG)
            AfxMessageBox(Jeden lub wicej niepoprawnych argumentw.");
        // aden z danych interfejsw nie jest dostpny.
        if (hr == E_NOINTERFACE)
            AfxMessageBox(aden z interfejsw nie jest dostpny.");
        // Tylko niektre dania powiody si.
        if (hr == CO_S_NOTALLINTERFACES)
            AfxMessageBox(Niektre interfejsy nie s dostpne.");
        // Wywietl oglny komunikat bdu i wyjd.
        AfxMessageBox(Utworzenie obiektu nie powiodo si");
        return hr;
    }

    // Sprawd wynik pojedynczego zapytania interfejsu.
    hr = mqi.hr;
    if (FAILED(hr))
    {
        AfxMessageBox(Nie mona odczyta wskanika interfejsu.");
        return hr;
    }

    // Zapisz wskanik interfejsu w zmiennej lokalnej.
    m_pDoTest = (IOrderModify*)mqi.pItf;

    // Pobierz informacje z katalogu.
    hr = m_pDoTest->PobierzTowarKatalog(pbstrIDProduktu, 
                                        bstrDirection, 
                                        pbstrNazwa produktu, 
                                        pcurrCena, 
                                        piDostepnosc);
    if (FAILED(hr))
        AfxMessageBox(Transfer dania do katalogu nie powid si );
    // Odcz rodowisko COM.
    CoUninitialize();

    // Poinformuj klienta o sukcesie.
    return S_OK;
}
