[pywin32-checkins] pywin32/com/win32com/src PyStorage.cpp,1.7,1.8
OLD project page for the Python extensions for Windows
Brought to you by:
mhammond
From: Roger U. <ru...@us...> - 2005-02-12 17:15:08
|
Update of /cvsroot/pywin32/pywin32/com/win32com/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15533/com/win32com/src Modified Files: PyStorage.cpp Log Message: Load module handle and function pointers once Index: PyStorage.cpp =================================================================== RCS file: /cvsroot/pywin32/pywin32/com/win32com/src/PyStorage.cpp,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** PyStorage.cpp 10 Feb 2005 02:23:21 -0000 1.7 --- PyStorage.cpp 12 Feb 2005 17:14:51 -0000 1.8 *************** *** 6,10 **** #include "PythonCOM.h" #include "PythonCOMServer.h" ! // @doc --- 6,10 ---- #include "PythonCOM.h" #include "PythonCOMServer.h" ! static HMODULE ole32=NULL; // @doc *************** *** 163,169 **** if (myStgOpenStorageEx==NULL) { // Haven't tried to fetch it yet. myStgOpenStorageEx = (PFNStgOpenStorageEx)-1; ! HMODULE hmodule=GetModuleHandle("Ole32.dll"); ! if (hmodule!=NULL){ ! FARPROC fp = GetProcAddress(hmodule,"StgOpenStorageEx"); if (fp!=NULL) myStgOpenStorageEx=(PFNStgOpenStorageEx)fp; --- 163,170 ---- if (myStgOpenStorageEx==NULL) { // Haven't tried to fetch it yet. myStgOpenStorageEx = (PFNStgOpenStorageEx)-1; ! if (ole32==NULL) ! ole32=GetModuleHandle("Ole32.dll"); ! if (ole32!=NULL){ ! FARPROC fp = GetProcAddress(ole32,"StgOpenStorageEx"); if (fp!=NULL) myStgOpenStorageEx=(PFNStgOpenStorageEx)fp; *************** *** 218,221 **** --- 219,236 ---- FMTID fmtid; PyObject *obfmtid=NULL; + + typedef HRESULT (WINAPI * PFNFmtIdToPropStgName)(const FMTID*, LPOLESTR); + static PFNFmtIdToPropStgName pfnFmtIdToPropStgName=NULL; + static BOOL pfnchecked=FALSE; + if (!pfnchecked){ + if (ole32==NULL) + ole32=GetModuleHandle("Ole32.dll"); + if (ole32!=NULL) + pfnFmtIdToPropStgName = (PFNFmtIdToPropStgName)GetProcAddress(ole32, "FmtIdToPropStgName"); + pfnchecked=TRUE; + } + if (pfnFmtIdToPropStgName==NULL) + return PyErr_Format(PyExc_NotImplementedError,"FmtIdToPropStgName is not available on this platform"); + if (!PyArg_ParseTuple(args, "O:FmtIdToPropStgName", &obfmtid)) return NULL; *************** *** 223,231 **** return NULL; ! typedef HRESULT (WINAPI * PFNFmtIdToPropStgName)(const FMTID*, LPOLESTR); ! HMODULE hmod = GetModuleHandle(TEXT("ole32.dll")); ! PFNFmtIdToPropStgName pfnFmtIdToPropStgName = (PFNFmtIdToPropStgName)GetProcAddress(hmod, "FmtIdToPropStgName"); ! if (pfnFmtIdToPropStgName==NULL) ! return PyCom_BuildPyException(E_NOTIMPL); PY_INTERFACE_PRECALL; err = (*pfnFmtIdToPropStgName)(&fmtid, oszName); --- 238,242 ---- return NULL; ! PY_INTERFACE_PRECALL; err = (*pfnFmtIdToPropStgName)(&fmtid, oszName); *************** *** 245,248 **** --- 256,273 ---- HRESULT err; PyObject *obName=NULL; + + typedef HRESULT (WINAPI * PFNPropStgNameToFmtId)(const LPOLESTR, FMTID*); + static PFNPropStgNameToFmtId pfnPropStgNameToFmtId=NULL; + static BOOL pfnchecked=FALSE; + if (!pfnchecked){ + if (ole32==NULL) + ole32=GetModuleHandle("Ole32.dll"); + if (ole32!=NULL) + pfnPropStgNameToFmtId = (PFNPropStgNameToFmtId)GetProcAddress(ole32, "PropStgNameToFmtId"); + pfnchecked=TRUE; + } + if (pfnPropStgNameToFmtId==NULL) + return PyErr_Format(PyExc_NotImplementedError,"PropStgNameToFmtId is not available on this platform"); + if (!PyArg_ParseTuple(args, "O:PropStgNameToFmtId", &obName)) return NULL; *************** *** 250,258 **** return NULL; - typedef HRESULT (WINAPI * PFNPropStgNameToFmtId)(const LPOLESTR, FMTID*); - HMODULE hmod = GetModuleHandle(TEXT("ole32.dll")); - PFNPropStgNameToFmtId pfnPropStgNameToFmtId = (PFNPropStgNameToFmtId)GetProcAddress(hmod, "PropStgNameToFmtId"); - if (pfnPropStgNameToFmtId==NULL) - return PyCom_BuildPyException(E_NOTIMPL); PY_INTERFACE_PRECALL; err = (*pfnPropStgNameToFmtId)(oszName, &fmtid); --- 275,278 ---- |