Toon posts:

[C++/COM] BindToObject parameter incorrect.

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb het volgende stukje code om alle objecten uit de running object table op te pikken en 'n reference te krijgen naar de IUnknown interface. Goed Running object tabel benaderen, geen punt, in 'n loopje langs alle objecten gaan daar ook geen punt, maar zodra ik de BindToObject van de Moniker aanroep, krijg ik *ALTIJD* een HResult van 80070057(Parameter is incorrect) het maakt niet uit welke interface ik request hij failed *altijd* en het gekke is bij de objecten in die table komt ie niet eens aan de QueryInterface toe om te zien of de gevraagde interface wel word gesupport... wat oh wat zie ik over het hoofd.. :?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
int main(int argc, char* argv[])
{
    IBindCtx *pbc;
    IRunningObjectTable *prot;
    IEnumMoniker *pem;
    IMoniker *pmon;
    
    ULONG fetched;
    HRESULT hr;
    
    CoInitializeEx(NULL,COINIT_MULTITHREADED);  
    
    hr = CreateBindCtx(0, &pbc);
    if(FAILED(hr)) 
        printf("CreateBindCtx failed: %.8x\n"); 
    else
    {
        hr = pbc->GetRunningObjectTable(&prot);
        if(FAILED(hr)) 
            printf("GetRunningObjectTable failed: %.8x\n");  
        else
        {
            hr = prot->EnumRunning(&pem);
            if(FAILED(hr)) 
                printf("EnumRunning failed: %.8x\n"); 
            else
            {
                pem->Reset();
                
                while(pem->Next(1, &pmon, &fetched) == S_OK) {
                    IUnknown *pUnk=NULL;
                    hr = pmon->BindToObject(pbc, NULL, IID_IUnknown, (void **)&pUnk);
                    if(!FAILED(hr)) {
                        printf("BIND OK! IUnknown = %08lx\n",pUnk);
                        pUnk->Release();
                    }
                    else {
                        printf("BIND FAILED! HR= %08lx\n",hr);
                    }
                }
            }
        }
    }

    if (prot) prot->Release();
    if (pbc) pbc->Release();
    if (pem) pem->Release();
    if (pmon) pmon->Release();
    CoUninitialize();
    return 0;
}

[Edit: Omdat D2k en .oisyn 2 zeiksnorren zijn een versie zonder goto's >:) ]

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 12:35

.oisyn

Moderator Devschuur®

Demotivational Speaker

.ot: ik tel 3 goto's *D

je bent bij die printf's trouwens ook vergeten de hr mee te geven als parameter

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
[newbie mode]
Ik heb de goto's weggehaald en nu werkt het nog steeds niet, hoe kan dat nou? :?
[/newbie mode]

-Sigh-

Verwijderd

Topicstarter
als ik
code:
1
ht = pmon->BindToObject(pbc, NULL, IID_IUnknown, (void **)&pUnk);

vervang door :
code:
1
hr = prot->GetObject(pmon,&pUnk);



dan werkt het wel..goed nu nog 'n verklaring, BindToObject zou gewoon moeten werken imho...

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

Op zondag 19 mei 2002 14:46 schreef Yarvieh het volgende:
[Edit: Omdat D2k en .oisyn 2 zeiksnorren zijn een versie zonder goto's >:) ]
:X :* ;)
</ot>

Doet iets met Cloud (MS/IBM)


Verwijderd

Werkt BindMoniker() wel?

Verwijderd

Topicstarter
Op zondag 19 mei 2002 17:10 schreef Otis het volgende:
Werkt BindMoniker() wel?
Nope ook 80070057.
Pagina: 1