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;
}
Esempio n. 2
0
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;
}
Esempio n. 3
0
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;
}
Esempio n. 4
0
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;
}
Esempio n. 5
0
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;
}
Esempio n. 10
0
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());
}
Esempio n. 11
0
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;
}
Esempio n. 15
0
LPUNKNOWN CConnectionPoint::QuerySinkInterface(LPUNKNOWN pUnkSink)
{
	LPUNKNOWN pUnkReturn = NULL;
	pUnkSink->QueryInterface(GetIID(), reinterpret_cast<void**>(&pUnkReturn));
	return pUnkReturn;
}