STDMETHODIMP PyGLockBytes::WriteAt( /* [in] */ ULARGE_INTEGER ulOffset, /* [in] */ const void __RPC_FAR * pv, /* [in] */ ULONG cb, /* [out] */ ULONG __RPC_FAR * pcbWritten) { if (pv==NULL) return E_POINTER; if (pcbWritten) *pcbWritten = 0; PY_GATEWAY_METHOD; PyObject *obulOffset = PyWinObject_FromULARGE_INTEGER(ulOffset); PyObject *obbuf = PyString_FromStringAndSize((char *)pv, cb); PyObject *result; HRESULT hr=InvokeViaPolicy("WriteAt", &result, "OO", obulOffset, obbuf); Py_XDECREF(obulOffset); Py_XDECREF(obbuf); if (FAILED(hr)) return hr; // Process the Python results, and convert back to the real params int cbWritten = PyInt_AsLong(result); Py_DECREF(result); if ( cbWritten == -1 ) { PyErr_Clear(); return PyCom_SetCOMErrorFromSimple(E_FAIL, GetIID()); } if ( pcbWritten != NULL ) *pcbWritten = cbWritten; return S_OK; }
NS_IMETHODIMP nsXPCWrappedJS::GetInterfaceIID(nsIID** iid) { NS_PRECONDITION(iid, "bad param"); *iid = (nsIID*) nsMemory::Clone(&(GetIID()), sizeof(nsIID)); return *iid ? NS_OK : NS_ERROR_UNEXPECTED; }
STDMETHODIMP PyGConnectionPoint::Advise(IUnknown *pUnk, DWORD *pdwCookie) { PY_GATEWAY_METHOD; if (pUnk==NULL || pdwCookie==NULL) return E_POINTER; PyObject *obUnknown = PyCom_PyObjectFromIUnknown(pUnk, IID_IUnknown, TRUE); // Take a reference to this object. if (obUnknown==NULL) return PyCom_SetCOMErrorFromPyException(GetIID()); PyObject *result = NULL; *pdwCookie = 0; HRESULT hr = InvokeViaPolicy("Advise", &result, "O", obUnknown); Py_DECREF(obUnknown); if (FAILED(hr)) return hr; *pdwCookie = PyInt_AsLong(result); if (PyErr_Occurred()) { hr = PyCom_SetCOMErrorFromPyException(GetIID()); *pdwCookie = 0; } Py_XDECREF(result); return hr; }
STDMETHODIMP PyGConnectionPoint::GetConnectionPointContainer( IConnectionPointContainer **ppCPC) { PY_GATEWAY_METHOD; if (ppCPC==NULL) return E_POINTER; PyObject *result; HRESULT hr = InvokeViaPolicy("GetConnectionPointContainer", &result, NULL); if (FAILED(hr)) return hr; if (!PyCom_InterfaceFromPyObject(result, IID_IConnectionPointContainer, (void **)ppCPC)) hr = PyCom_SetCOMErrorFromPyException(GetIID()); Py_XDECREF(result); return hr; }
STDMETHODIMP PyGPropertyBag::Read( /* [in] */ LPCOLESTR pszPropName, /* [out][in] */ VARIANT __RPC_FAR *pVar, /* [in] */ IErrorLog __RPC_FAR *pErrorLog) { if ( pszPropName == NULL || pVar == NULL ) return E_POINTER; PY_GATEWAY_METHOD; PyObject *obLog; if ( pErrorLog ) { obLog = PyCom_PyObjectFromIUnknown(pErrorLog, IID_IErrorLog, TRUE); if ( !obLog ) return PyCom_SetCOMErrorFromPyException(GetIID()); } else { Py_INCREF(Py_None); obLog = Py_None; } PyObject *obName = PyWinObject_FromWCHAR(pszPropName); PyObject *result; HRESULT hr = InvokeViaPolicy("Read", &result, "OiO", obName, (int)V_VT(pVar), obLog); Py_DECREF(obLog); Py_XDECREF(obName); if (FAILED(hr)) return hr; if (!PyCom_VariantFromPyObject(result, pVar)) hr = PyCom_SetCOMErrorFromPyException(GetIID()); Py_DECREF(result); return hr; }
STDMETHODIMP PyGActiveScriptError::GetSourcePosition(DWORD *pdwSourceContext, ULONG *pulLineNumber, LONG *plCharacterPosition) { if (pdwSourceContext==NULL || pulLineNumber==NULL || plCharacterPosition==NULL) return E_POINTER; PY_GATEWAY_METHOD; PyObject *result; HRESULT hr = InvokeViaPolicy("GetSourcePosition", &result, NULL); if (FAILED(hr)) return hr; if (!PyArg_ParseTuple(result, "iii", pdwSourceContext, pulLineNumber, plCharacterPosition)) hr = PyCom_SetCOMErrorFromPyException(GetIID()); Py_DECREF(result); return hr; }
STDMETHODIMP PyGActiveScriptError::GetSourceLineText(BSTR *pbstrSourceLine) { if (pbstrSourceLine==NULL) return E_POINTER; PY_GATEWAY_METHOD; PyObject *result; HRESULT hr = InvokeViaPolicy("GetSourceLineText", &result, NULL); if (FAILED(hr)) return hr; if (!PyWinObject_AsBstr(result, pbstrSourceLine, TRUE)) hr = PyCom_SetCOMErrorFromPyException(GetIID()); Py_DECREF(result); return hr; }
STDMETHODIMP PyGConnectionPointContainer::FindConnectionPoint(REFIID riid, IConnectionPoint **ppCP) { PY_GATEWAY_METHOD; if (ppCP==NULL) return E_POINTER; *ppCP = NULL; PyObject *obIID = PyWinObject_FromIID(riid); PyObject *result; HRESULT hr = InvokeViaPolicy("FindConnectionPoint", &result, "O", obIID); Py_XDECREF(obIID); if (FAILED(hr)) return hr; if (result != Py_None && !PyCom_InterfaceFromPyObject(result, IID_IConnectionPoint, (void **)ppCP)) hr = PyCom_SetCOMErrorFromPyException(GetIID()); Py_XDECREF(result); return (hr==S_OK && *ppCP==NULL) ? CONNECT_E_NOCONNECTION : hr; }
STDMETHODIMP PyGPersistPropertyBag::Load( /* [in] */ IPropertyBag __RPC_FAR *pPropBag, /* [in] */ IErrorLog __RPC_FAR *pErrorLog) { HRESULT hr; if ( pPropBag == NULL ) return E_POINTER; PY_GATEWAY_METHOD; PyObject *obLog; if ( pErrorLog != NULL ) { obLog = PyCom_PyObjectFromIUnknown(pErrorLog, IID_IErrorLog, TRUE); if ( !obLog ) return PyCom_SetCOMErrorFromPyException(GetIID()); } else { Py_INCREF(Py_None); obLog = Py_None; } PyObject *obBag = PyCom_PyObjectFromIUnknown(pPropBag, IID_IPropertyBag, TRUE); if ( !obBag ) { hr = PyCom_SetCOMErrorFromPyException(GetIID()); Py_DECREF(obLog); return hr; } hr = InvokeViaPolicy("Load", NULL, "OO", obBag, obLog); Py_DECREF(obBag); Py_DECREF(obLog); return hr; }
STDMETHODIMP PyGShellBrowser::InsertMenusSB( /* [in] */ HMENU hmenuShared, /* [out][in] */ LPOLEMENUGROUPWIDTHS lpMenuWidths) { static const char *method_name = "InsertMenusSB"; PY_GATEWAY_METHOD; PyObject *oblpMenuWidths = PyObject_FromOLEMENUGROUPWIDTHS(lpMenuWidths); if (oblpMenuWidths==NULL) return MAKE_PYCOM_GATEWAY_FAILURE_CODE(method_name); PyObject *result; HRESULT hr=InvokeViaPolicy(method_name, &result, "NO", PyWinLong_FromHANDLE(hmenuShared), oblpMenuWidths); Py_DECREF(oblpMenuWidths); if (FAILED(hr)) return hr; PyObject_AsOLEMENUGROUPWIDTHS(result, lpMenuWidths); Py_DECREF(result); return PyCom_SetCOMErrorFromPyException(GetIID()); }
STDMETHODIMP PyGPropertyBag::Write( /* [in] */ LPCOLESTR pszPropName, /* [in] */ VARIANT __RPC_FAR *pVar) { if ( pszPropName == NULL || pVar == NULL ) return E_POINTER; PY_GATEWAY_METHOD; PyObject *value = PyCom_PyObjectFromVariant(pVar); if ( !value ) return PyCom_SetCOMErrorFromPyException(GetIID()); PyObject *obName = PyWinObject_FromWCHAR(pszPropName); HRESULT hr = InvokeViaPolicy("Write", NULL, "OO", obName, value); Py_DECREF(value); Py_XDECREF(obName); return hr; }
STDMETHODIMP PyGPersistPropertyBag::Save( /* [in] */ IPropertyBag __RPC_FAR *pPropBag, /* [in] */ BOOL fClearDirty, /* [in] */ BOOL fSaveAllProperties) { if ( pPropBag == NULL ) return E_POINTER; PY_GATEWAY_METHOD; PyObject *obBag = PyCom_PyObjectFromIUnknown(pPropBag, IID_IPropertyBag, TRUE); if ( !obBag ) return PyCom_SetCOMErrorFromPyException(GetIID()); HRESULT hr = InvokeViaPolicy("Save", NULL, "Oii", obBag, (int)fClearDirty, (int)fSaveAllProperties); Py_DECREF(obBag); return hr; }
STDMETHODIMP PyGShellIconOverlayManager::OverlayIndexFromImageIndex( /* [unique][in] */ int iImage, /* [out] */ int __RPC_FAR * index, /* [in] */ BOOL fAdd) { PY_GATEWAY_METHOD; PyObject *result; HRESULT hr=InvokeViaPolicy("OverlayIndexFromImageIndex", &result, "ii", iImage, fAdd); if (FAILED(hr)) return hr; // Process the Python results, and convert back to the real params if (!PyArg_Parse(result, "i" , index)) return PyCom_SetAndLogCOMErrorFromPyException("OverlayIndexFromImageIndex", GetIID()); Py_DECREF(result); return hr; }
STDMETHODIMP PyGShellIconOverlayManager::GetReservedOverlayInfo( /* [unique][in] */ LPCWSTR path, /* [unique][in] */ DWORD attrib, /* [out] */ int __RPC_FAR * index, /* [in] */ DWORD flags, /* [in] */ int ireservedID) { PY_GATEWAY_METHOD; PyObject *obpath; obpath = MakeOLECHARToObj(path); PyObject *result; HRESULT hr=InvokeViaPolicy("GetReservedOverlayInfo", &result, "Olli", obpath, attrib, flags, ireservedID); Py_XDECREF(obpath); if (FAILED(hr)) return hr; // Process the Python results, and convert back to the real params if (!PyArg_Parse(result, "i" , index)) return PyCom_SetAndLogCOMErrorFromPyException("GetReservedOverlayInfo", GetIID()); Py_DECREF(result); return hr; }
LPUNKNOWN CConnectionPoint::QuerySinkInterface(LPUNKNOWN pUnkSink) { LPUNKNOWN pUnkReturn = NULL; pUnkSink->QueryInterface(GetIID(), reinterpret_cast<void**>(&pUnkReturn)); return pUnkReturn; }