Here's the structure and some code for testing:
include \masm32\MasmBasic\
MasmBasic.inc ;
downloaduselib
oleacc ; threadREFIID STRUCT
muInt
dd ?muSh1
dw ?muSh2
dw ?muB8
db 8 dup(?)REFIID ENDS
.data
typUUID REFIID <
0626FC520h,
0A41Eh,
011CFh,
<0A7h, 31h, 0, 0a0h, 0c9h, 8, 26h, 37h>>
IID_IAccessible REFIID <
618736E0h,
3C3Dh, 11CFh,
<81h, 0Ch, 0, 0AAh, 0, 38h, 9Bh, 71h>>
Init invoke CoInitialize, NULL
Inkey "ok" invoke CoUninitialize
Exit
invoke ObjectFromLresult, 1, 2, 3, 4
; behind Exit - just to test if it assembles... invoke LresultFromObject,
offset IID_IAccessible, 2, 3
; is that a pointer to RIID, or RIID itself??end start
Local $aRet = DllCall("oleacc.dll", "long", "ObjectFromLresult", "lresult", $lResult, "struct*", $typUUID, "wparam", 0, "idispatch*", 0)
ObjectFromLresult functionRetrieves a requested interface pointer for an accessible object based on a previously generated object reference.
STDAPI ObjectFromLresult(
__in LRESULT lResult,
__in REFIID riid,
__in WPARAM wParam,
__out void **ppvObject
);
LresultFromObject functionReturns a reference, similar to a handle, to the specified object. Servers return this reference when handling WM_GETOBJECT.
LRESULT LresultFromObject(
__in REFIID riid,
__in WPARAM wParam,
__in LPUNKNOWN pAcc
);