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.. 
[Edit: Omdat D2k en .oisyn 2 zeiksnorren zijn een versie zonder goto's
]
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