Hi, I was not getting BSTR marshalling NULL pointer exceptions due to a hack in the DOS support, which unprotected the 0 page all the time. Ciao, Marcus License: LGPL Changelog: BSTRs can be NULL, handle them seperately. Index: tmarshal.c =================================================================== RCS file: /home/wine/wine/dlls/oleaut32/tmarshal.c,v retrieving revision 1.2 diff -u -r1.2 tmarshal.c --- tmarshal.c 9 Mar 2002 23:39:10 -0000 1.2 +++ tmarshal.c 6 May 2002 19:42:34 -0000 @@ -369,10 +369,17 @@ case VT_NULL: return S_OK; case VT_BSTR: { /* DWORD size, string data */ - DWORD *bstr = ((DWORD*)(*arg))-1; - if (relaydeb) MESSAGE("%s",debugstr_w((LPWSTR)(bstr+1))); - return xbuf_add(buf,(LPBYTE)bstr,bstr[0]+4); + if (*arg) { + DWORD *bstr = ((DWORD*)(*arg))-1; + + if (relaydeb) MESSAGE("%s",debugstr_w((LPWSTR)(bstr+1))); + return xbuf_add(buf,(LPBYTE)bstr,bstr[0]+4); + } else { + DWORD xnull = 0; + + return xbuf_add(buf,(LPBYTE)&xnull,sizeof(xnull)); + } } case VT_BOOL: case VT_I4: