- Timestamp:
- Oct 8, 2004, 11:35:16 AM (21 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/oleaut32/safearray.c
r9400 r10631 124 124 125 125 126 /*********************************************************************** 127 * SafeArrayCreateEx (OLEAUT32.42) 128 * 129 * Create a new SafeArray. 130 * 131 * PARAMS 132 * vt [I] Type to store in the safe array 133 * cDims [I] Number of array dimensions 134 * rgsabound [I] Bounds of the array dimensions 135 * pvExtra [I] Extra data 136 * 137 * RETURNS 138 * Success: A pointer to a new array object. 139 * Failure: NULL, if any parameter is invalid or memory allocation fails. 140 * 141 * NOTES 142 * See SafeArray. 143 */ 144 SAFEARRAY* WINAPI SafeArrayCreateEx(VARTYPE vt, UINT cDims, SAFEARRAYBOUND *rgsabound, LPVOID pvExtra) 145 #ifdef __WIN32OS2__ 146 { 147 FIXME("%s: Not implemented! (returning E_NOTIMPL)", __FUNCTION__); 148 return E_NOTIMPL; 149 } 150 #else 151 { 152 ULONG ulSize = 0; 153 IRecordInfo* iRecInfo = (IRecordInfo*)pvExtra; 154 SAFEARRAY* psa; 155 156 TRACE("(%d->%s,%d,%p,%p)\n", vt, debugstr_vt(vt), cDims, rgsabound, pvExtra); 157 158 if (vt == VT_RECORD) 159 { 160 if (!iRecInfo) 161 return NULL; 162 IRecordInfo_GetSize(iRecInfo, &ulSize); 163 } 164 psa = SAFEARRAY_Create(vt, cDims, rgsabound, ulSize); 165 166 if (pvExtra) 167 { 168 switch(vt) 169 { 170 case VT_RECORD: 171 SafeArraySetRecordInfo(psa, pvExtra); 172 break; 173 case VT_UNKNOWN: 174 case VT_DISPATCH: 175 SafeArraySetIID(psa, pvExtra); 176 break; 177 } 178 } 179 return psa; 180 } 181 #endif 182 183 /*********************************************************************** 184 * SafeArraySetIID (OLEAUT32.57) 185 * 186 * Set the IID for a SafeArray. 187 * 188 * PARAMS 189 * psa [I] Array to set the IID from 190 * guid [I] IID 191 * 192 * RETURNS 193 * Success: S_OK. The IID is stored with the array 194 * Failure: An HRESULT error code indicating the error. 195 * 196 * NOTES 197 * See SafeArray. 198 */ 199 HRESULT WINAPI SafeArraySetIID(SAFEARRAY *psa, REFGUID guid) 200 { 201 GUID* dest = (GUID*)psa; 202 203 TRACE("(%p,%s)\n", psa, debugstr_guid(guid)); 204 205 if (!psa || !guid || !(psa->fFeatures & FADF_HAVEIID)) 206 return E_INVALIDARG; 207 208 dest[-1] = *guid; 209 return S_OK; 210 } 211 212 213 /*********************************************************************** 214 * SafeArrayGetIID (OLEAUT32.67) 215 * 216 * Get the IID from a SafeArray. 217 * 218 * PARAMS 219 * psa [I] Array to get the ID from 220 * pGuid [O] Destination for the IID 221 * 222 * RETURNS 223 * Success: S_OK. pRinfo contains the IID, or NULL if there was none. 224 * Failure: An HRESULT error code indicating the error. 225 * 226 * NOTES 227 * See SafeArray. 228 */ 229 HRESULT WINAPI SafeArrayGetIID(SAFEARRAY *psa, GUID *pGuid) 230 { 231 GUID* src = (GUID*)psa; 232 233 TRACE("(%p,%p)\n", psa, pGuid); 234 235 if (!psa || !pGuid || !(psa->fFeatures & FADF_HAVEIID)) 236 return E_INVALIDARG; 237 238 *pGuid = src[-1]; 239 return S_OK; 240 } 241 242 243 /*********************************************************************** 244 * SafeArraySetRecordInfo (OLEAUT32.45) 245 */ 246 #ifdef __WIN32OS2__ 247 HRESULT WINAPI SafeArraySetRecordInfo(void* pFixMe, void* pFixMe2) 248 #else 249 HRESULT WINAPI SafeArraySetRecordInfo(SAFEARRAY* psa, IRecordInfo * psaboundNew) 250 #endif 251 { 252 FIXME("%s: Not implemented! (returning E_NOTIMPL)", __FUNCTION__); 253 return E_NOTIMPL; 254 } 255 256 257 /*********************************************************************** 258 * SafeArrayGetRecordInfo (OLEAUT32.45) 259 */ 260 /* IRecordInfo helpers */ 261 #ifdef __WIN32OS2__ 262 HRESULT WINAPI SafeArrayGetRecordInfo(void* pFixMe, void** ppFixMe) 263 #else 264 HRESULT WINAPI SafeArrayGetRecordInfo(SAFEARRAY* psa,IRecordInfo** prinfo) 265 #endif 266 { 267 FIXME("%s: Not implemented! (returning E_NOTIMPL)", __FUNCTION__); 268 return E_NOTIMPL; 269 } 270 271 126 272 /************************************************************************* 127 273 * SafeArrayAllocDescriptor (OLEAUT32.36)
Note:
See TracChangeset
for help on using the changeset viewer.