4 * Copyright 1995 Martin von Loewis
11 #include "interfaces.h"
16 /* This implementation of the BSTR API is 16-bit only. It
17 represents BSTR as a 16:16 far pointer, and the strings
20 static BSTR16
BSTR_AllocBytes(int n
)
22 void *ptr
= SEGPTR_ALLOC(n
);
23 return (BSTR16
)SEGPTR_GET(ptr
);
26 static void BSTR_Free(BSTR16 in
)
28 SEGPTR_FREE( PTR_SEG_TO_LIN(in
) );
31 static void* BSTR_GetAddr(BSTR16 in
)
33 return in
? PTR_SEG_TO_LIN(in
) : 0;
36 /***********************************************************************
37 * SysAllocString [OLE2DISP.2]
39 BSTR16 WINAPI
SysAllocString16(LPOLESTR16 in
)
41 BSTR16 out
=BSTR_AllocBytes(strlen(in
)+1);
43 strcpy(BSTR_GetAddr(out
),in
);
47 /***********************************************************************
48 * SysAllocString [OLEAUT32.2]
50 BSTR32 WINAPI
SysAllocString32(LPOLESTR32 in
)
52 return HEAP_strdupW(GetProcessHeap(),0,in
);
55 /***********************************************************************
56 * SysReAllocString [OLE2DISP.3]
58 INT16 WINAPI
SysReAllocString16(LPBSTR16 old
,LPOLESTR16 in
)
60 BSTR16
new=SysAllocString16(in
);
66 /***********************************************************************
67 * SysReAllocString [OLEAUT32.3]
69 INT32 WINAPI
SysReAllocString32(LPBSTR32 old
,LPOLESTR32 in
)
71 BSTR32
new=SysAllocString32(in
);
72 HeapFree(GetProcessHeap(),0,*old
);
77 /***********************************************************************
78 * SysAllocStringLen [OLE2DISP.4]
80 BSTR16 WINAPI
SysAllocStringLen16(char *in
, int len
)
82 BSTR16 out
=BSTR_AllocBytes(len
+1);
84 strcpy(BSTR_GetAddr(out
),in
);
88 /***********************************************************************
89 * SysReAllocStringLen [OLE2DISP.5]
91 int WINAPI
SysReAllocStringLen16(BSTR16
*old
,char *in
,int len
)
93 BSTR16
new=SysAllocStringLen16(in
,len
);
99 /***********************************************************************
100 * SysFreeString [OLE2DISP.6]
102 void WINAPI
SysFreeString16(BSTR16 in
)
107 /***********************************************************************
108 * SysFreeString [OLEAUT32.6]
110 void WINAPI
SysFreeString32(BSTR32 in
)
112 HeapFree(GetProcessHeap(),0,in
);
115 /***********************************************************************
116 * SysStringLen [OLE2DISP.7]
118 int WINAPI
SysStringLen16(BSTR16 str
)
120 return strlen(BSTR_GetAddr(str
));
123 OLESTATUS WINAPI
CreateDispTypeInfo(INTERFACEDATA
* pidata
,LCID lcid
,LPVOID
/*ITypeInfo*/ * * pptinfo
) {
124 FIXME(ole
,"(%p,%ld,%p),stub\n",pidata
,lcid
,pptinfo
);
128 OLESTATUS WINAPI
RegisterActiveObject(
129 IUnknown
* punk
,REFCLSID rclsid
,DWORD dwFlags
, DWORD
* pdwRegister
132 WINE_StringFromCLSID(rclsid
,buf
);
133 FIXME(ole
,"RegisterActiveObject(%p,%s,0x%08lx,%p),stub\n",punk
,buf
,dwFlags
,pdwRegister
);