Update of /cvsroot/pywin32/pywin32/com/win32comext/bits/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28263/com/win32comext/bits/src
Modified Files:
Tag: sidnei-bits
PyIBackgroundCopyError.cpp PyIBackgroundCopyFile2.cpp
PyIBackgroundCopyJob.cpp PyIBackgroundCopyManager.cpp bits.cpp
Log Message:
- A more complete test exercising more of the (implemented) API, now handles errors and uses a callback for printing status, exits when transfer is finished.
Index: PyIBackgroundCopyFile2.cpp
===================================================================
RCS file: /cvsroot/pywin32/pywin32/com/win32comext/bits/src/Attic/PyIBackgroundCopyFile2.cpp,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -C2 -d -r1.1.2.1 -r1.1.2.2
*** PyIBackgroundCopyFile2.cpp 6 Feb 2008 04:21:20 -0000 1.1.2.1
--- PyIBackgroundCopyFile2.cpp 6 Feb 2008 09:10:25 -0000 1.1.2.2
***************
*** 63,73 ****
if ( pIBCF2 == NULL )
return NULL;
! if ( !PyArg_ParseTuple(args, ":SetRemoteName") )
return NULL;
! LPCWSTR RemoteName;
HRESULT hr;
PY_INTERFACE_PRECALL;
! hr = pIBCF2->SetRemoteName(RemoteName);
!
PY_INTERFACE_POSTCALL;
--- 63,77 ----
if ( pIBCF2 == NULL )
return NULL;
! PyObject *obpRemoteName;
! if ( !PyArg_ParseTuple(args, "O:SetRemoteName", &obpRemoteName) )
return NULL;
! WCHAR *pRemoteName;
! BOOL bPythonIsHappy = TRUE;
! if (bPythonIsHappy && !PyWinObject_AsWCHAR( obpRemoteName, &pRemoteName )) bPythonIsHappy = FALSE;
! if (!bPythonIsHappy) return NULL;
!
HRESULT hr;
PY_INTERFACE_PRECALL;
! hr = pIBCF2->SetRemoteName(pRemoteName);
PY_INTERFACE_POSTCALL;
Index: bits.cpp
===================================================================
RCS file: /cvsroot/pywin32/pywin32/com/win32comext/bits/src/Attic/bits.cpp,v
retrieving revision 1.1.2.2
retrieving revision 1.1.2.3
diff -C2 -d -r1.1.2.2 -r1.1.2.3
*** bits.cpp 6 Feb 2008 04:21:20 -0000 1.1.2.2
--- bits.cpp 6 Feb 2008 09:10:25 -0000 1.1.2.3
***************
*** 254,261 ****
--- 254,263 ----
PYCOM_INTERFACE_CLIENT_ONLY( BackgroundCopyManager ),
PYCOM_INTERFACE_SERVER_ONLY( BackgroundCopyCallback ),
+ PYCOM_INTERFACE_CLIENT_ONLY( BackgroundCopyError ),
PYCOM_INTERFACE_CLIENT_ONLY( BackgroundCopyJob ),
PYCOM_INTERFACE_CLIENT_ONLY( BackgroundCopyJob2 ),
PYCOM_INTERFACE_CLIENT_ONLY( BackgroundCopyJob3 ),
PYCOM_INTERFACE_CLIENT_ONLY( BackgroundCopyFile ),
+ PYCOM_INTERFACE_CLIENT_ONLY( BackgroundCopyFile2 ),
PYCOM_INTERFACE_CLIENT_ONLY( EnumBackgroundCopyJobs ),
PYCOM_INTERFACE_CLIENT_ONLY( EnumBackgroundCopyFiles )
***************
*** 336,338 ****
--- 338,347 ----
PyModule_AddIntConstant(module, "BG_JOB_TYPE_UPLOAD_REPLY", BG_JOB_TYPE_UPLOAD_REPLY);
+ // notify flags
+ PyModule_AddIntConstant(module, "BG_NOTIFY_JOB_TRANSFERRED", BG_NOTIFY_JOB_TRANSFERRED);
+ PyModule_AddIntConstant(module, "BG_NOTIFY_JOB_ERROR", BG_NOTIFY_JOB_ERROR);
+ PyModule_AddIntConstant(module, "BG_NOTIFY_DISABLE", BG_NOTIFY_DISABLE);
+ PyModule_AddIntConstant(module, "BG_NOTIFY_JOB_MODIFICATION", BG_NOTIFY_JOB_MODIFICATION);
+ // PyModule_AddIntConstant(module, "BG_NOTIFY_FILE_TRANSFERRED", BG_NOTIFY_FILE_TRANSFERRED);
+
}
Index: PyIBackgroundCopyManager.cpp
===================================================================
RCS file: /cvsroot/pywin32/pywin32/com/win32comext/bits/src/Attic/PyIBackgroundCopyManager.cpp,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -C2 -d -r1.1.2.1 -r1.1.2.2
*** PyIBackgroundCopyManager.cpp 6 Feb 2008 01:51:28 -0000 1.1.2.1
--- PyIBackgroundCopyManager.cpp 6 Feb 2008 09:10:25 -0000 1.1.2.2
***************
*** 33,47 ****
// @pyparm <o unicode>|DisplayName||Description for DisplayName
BG_JOB_TYPE Type;
- // PyObject *obType;
// @pyparm int|Type||Job Type (See BG_JOB_TYPE_*)
GUID pJobId;
PyObject *obDisplayName;
LPWSTR DisplayName;
! IBackgroundCopyJob * ppJob;
if ( !PyArg_ParseTuple(args, "Ol:CreateJob", &obDisplayName, &Type) )
return NULL;
BOOL bPythonIsHappy = TRUE;
if (bPythonIsHappy && !PyWinObject_AsBstr(obDisplayName, &DisplayName)) bPythonIsHappy = FALSE;
- //if (bPythonIsHappy && !PyObject_AsBG_JOB_TYPE( obType, Type )) bPythonIsHappy = FALSE;
if (!bPythonIsHappy) return NULL;
HRESULT hr;
--- 33,45 ----
// @pyparm <o unicode>|DisplayName||Description for DisplayName
BG_JOB_TYPE Type;
// @pyparm int|Type||Job Type (See BG_JOB_TYPE_*)
GUID pJobId;
PyObject *obDisplayName;
LPWSTR DisplayName;
! IBackgroundCopyJob *ppJob;
if ( !PyArg_ParseTuple(args, "Ol:CreateJob", &obDisplayName, &Type) )
return NULL;
BOOL bPythonIsHappy = TRUE;
if (bPythonIsHappy && !PyWinObject_AsBstr(obDisplayName, &DisplayName)) bPythonIsHappy = FALSE;
if (!bPythonIsHappy) return NULL;
HRESULT hr;
***************
*** 49,54 ****
hr = pIBCM->CreateJob( DisplayName, Type, &pJobId, &ppJob );
SysFreeString(DisplayName);
- // PyObject_FreeBG_JOB_TYPE(Type);
- // PyObject_FreeGUID *(pJobId);
PY_INTERFACE_POSTCALL;
--- 47,50 ----
***************
*** 56,61 ****
if ( FAILED(hr) )
return PyCom_BuildPyException(hr, pIBCM, IID_IBackgroundCopyManager );
- PyObject *obppJob;
obppJob = PyCom_PyObjectFromIUnknown(ppJob, IID_IBackgroundCopyJob, FALSE);
PyObject *pyretval = Py_BuildValue("O", obppJob);
--- 52,57 ----
if ( FAILED(hr) )
return PyCom_BuildPyException(hr, pIBCM, IID_IBackgroundCopyManager );
+ PyObject *obppJob;
obppJob = PyCom_PyObjectFromIUnknown(ppJob, IID_IBackgroundCopyJob, FALSE);
PyObject *pyretval = Py_BuildValue("O", obppJob);
***************
*** 73,77 ****
PyObject *objobID;
IID jobID;
! IBackgroundCopyJob * ppJob;
if ( !PyArg_ParseTuple(args, "O:GetJob", &objobID) )
return NULL;
--- 69,73 ----
PyObject *objobID;
IID jobID;
! IBackgroundCopyJob *ppJob;
if ( !PyArg_ParseTuple(args, "O:GetJob", &objobID) )
return NULL;
***************
*** 103,107 ****
// @pyparm int|dwFlags||Description for dwFlags
DWORD dwFlags;
! IEnumBackgroundCopyJobs * ppEnum;
if ( !PyArg_ParseTuple(args, "l:EnumJobs", &dwFlags) )
return NULL;
--- 99,103 ----
// @pyparm int|dwFlags||Description for dwFlags
DWORD dwFlags;
! IEnumBackgroundCopyJobs *ppEnum;
if ( !PyArg_ParseTuple(args, "l:EnumJobs", &dwFlags) )
return NULL;
Index: PyIBackgroundCopyError.cpp
===================================================================
RCS file: /cvsroot/pywin32/pywin32/com/win32comext/bits/src/Attic/PyIBackgroundCopyError.cpp,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -C2 -d -r1.1.2.1 -r1.1.2.2
*** PyIBackgroundCopyError.cpp 6 Feb 2008 01:51:28 -0000 1.1.2.1
--- PyIBackgroundCopyError.cpp 6 Feb 2008 09:10:25 -0000 1.1.2.2
***************
*** 2,6 ****
// Generated by makegw.py
! #include "shell_pch.h"
#include "PyIBackgroundCopyError.h"
--- 2,6 ----
// Generated by makegw.py
! #include "bits_pch.h"
#include "PyIBackgroundCopyError.h"
***************
*** 31,55 ****
if ( pIBCE == NULL )
return NULL;
! // *** The input argument pContext of type "BG_ERROR_CONTEXT *" was not processed ***
! // Please check the conversion function is appropriate and exists!
! BG_ERROR_CONTEXT * pContext;
PyObject *obpContext;
! // @pyparm <o PyBG_ERROR_CONTEXT *>|pContext||Description for pContext
! // *** The input argument pCode of type "HRESULT *" was not processed ***
! // Please check the conversion function is appropriate and exists!
! HRESULT * pCode;
PyObject *obpCode;
! // @pyparm <o PyHRESULT *>|pCode||Description for pCode
! if ( !PyArg_ParseTuple(args, "OO:GetError", &obpContext, &obpCode) )
return NULL;
- BOOL bPythonIsHappy = TRUE;
- if (bPythonIsHappy && !PyObject_AsBG_ERROR_CONTEXT *( obpContext, &pContext )) bPythonIsHappy = FALSE;
- if (bPythonIsHappy && !PyObject_AsHRESULT *( obpCode, &pCode )) bPythonIsHappy = FALSE;
- if (!bPythonIsHappy) return NULL;
HRESULT hr;
PY_INTERFACE_PRECALL;
hr = pIBCE->GetError( pContext, pCode );
- PyObject_FreeBG_ERROR_CONTEXT *(pContext);
- PyObject_FreeHRESULT *(pCode);
PY_INTERFACE_POSTCALL;
--- 31,43 ----
if ( pIBCE == NULL )
return NULL;
! BG_ERROR_CONTEXT *pContext;
PyObject *obpContext;
! HRESULT *pCode;
PyObject *obpCode;
! if ( !PyArg_ParseTuple(args, ":GetError") )
return NULL;
HRESULT hr;
PY_INTERFACE_PRECALL;
hr = pIBCE->GetError( pContext, pCode );
PY_INTERFACE_POSTCALL;
***************
*** 57,64 ****
if ( FAILED(hr) )
return PyCom_BuildPyException(hr, pIBCE, IID_IBackgroundCopyError );
! // *** The output argument pContext of type "BG_ERROR_CONTEXT *" was not processed ***
! // The type 'BG_ERROR_CONTEXT *' (pContext) is unknown.
! // *** The output argument pCode of type "HRESULT *" was not processed ***
! // The type 'HRESULT *' (pCode) is unknown.
Py_INCREF(Py_None);
return Py_None;
--- 45,49 ----
if ( FAILED(hr) )
return PyCom_BuildPyException(hr, pIBCE, IID_IBackgroundCopyError );
!
Py_INCREF(Py_None);
return Py_None;
***************
*** 72,89 ****
if ( pIBCE == NULL )
return NULL;
! IBackgroundCopyFile ** * pVal;
if ( !PyArg_ParseTuple(args, ":GetFile") )
return NULL;
HRESULT hr;
PY_INTERFACE_PRECALL;
! hr = pIBCE->GetFile( *pVal );
PY_INTERFACE_POSTCALL;
if ( FAILED(hr) )
! return PyCom_BuildPyException(hr, pIBCE, IID_IBackgroundCopyError );
PyObject *obpVal;
! obpVal = PyCom_PyObjectFromIUnknown(pVal, IID_IBackgroundCopyFile **, FALSE);
PyObject *pyretval = Py_BuildValue("O", obpVal);
Py_XDECREF(obpVal);
--- 57,74 ----
if ( pIBCE == NULL )
return NULL;
! IBackgroundCopyFile *pVal;
if ( !PyArg_ParseTuple(args, ":GetFile") )
return NULL;
HRESULT hr;
PY_INTERFACE_PRECALL;
! hr = pIBCE->GetFile( &pVal );
PY_INTERFACE_POSTCALL;
if ( FAILED(hr) )
! return PyCom_BuildPyException(hr, pIBCE, IID_IBackgroundCopyError);
PyObject *obpVal;
! obpVal = PyCom_PyObjectFromIUnknown(pVal, IID_IBackgroundCopyFile, FALSE);
PyObject *pyretval = Py_BuildValue("O", obpVal);
Py_XDECREF(obpVal);
***************
*** 98,126 ****
return NULL;
// @pyparm int|LanguageId||Description for LanguageId
! // *** The input argument pErrorDescription of type "LPWSTR *" was not processed ***
! // Please check the conversion function is appropriate and exists!
! LPWSTR * pErrorDescription;
! PyObject *obpErrorDescription;
! // @pyparm <o PyLPWSTR *>|pErrorDescription||Description for pErrorDescription
DWORD LanguageId;
! if ( !PyArg_ParseTuple(args, "lO:GetErrorDescription", &LanguageId, &obpErrorDescription) )
return NULL;
- BOOL bPythonIsHappy = TRUE;
- if (bPythonIsHappy && !PyObject_AsLPWSTR *( obpErrorDescription, &pErrorDescription )) bPythonIsHappy = FALSE;
- if (!bPythonIsHappy) return NULL;
HRESULT hr;
- PY_INTERFACE_PRECALL;
- hr = pIBCE->GetErrorDescription( LanguageId, pErrorDescription );
- PyObject_FreeLPWSTR *(pErrorDescription);
PY_INTERFACE_POSTCALL;
if ( FAILED(hr) )
return PyCom_BuildPyException(hr, pIBCE, IID_IBackgroundCopyError );
- // *** The output argument pErrorDescription of type "LPWSTR *" was not processed ***
- // The type 'LPWSTR *' (pErrorDescription) is unknown.
- Py_INCREF(Py_None);
- return Py_None;
}
--- 83,101 ----
return NULL;
// @pyparm int|LanguageId||Description for LanguageId
! WCHAR *pErrorDescription;
DWORD LanguageId;
! if ( !PyArg_ParseTuple(args, "l:GetErrorDescription", &LanguageId) )
return NULL;
HRESULT hr;
+ PY_INTERFACE_PRECALL;
+ hr = pIBCE->GetErrorDescription( LanguageId, &pErrorDescription );
PY_INTERFACE_POSTCALL;
if ( FAILED(hr) )
return PyCom_BuildPyException(hr, pIBCE, IID_IBackgroundCopyError );
+ PyObject *ret = PyString_FromUnicode(pErrorDescription);
+ return ret;
}
***************
*** 132,160 ****
return NULL;
// @pyparm int|LanguageId||Description for LanguageId
! // *** The input argument pContextDescription of type "LPWSTR *" was not processed ***
! // Please check the conversion function is appropriate and exists!
! LPWSTR * pContextDescription;
! PyObject *obpContextDescription;
! // @pyparm <o PyLPWSTR *>|pContextDescription||Description for pContextDescription
DWORD LanguageId;
! if ( !PyArg_ParseTuple(args, "lO:GetErrorContextDescription", &LanguageId, &obpContextDescription) )
return NULL;
- BOOL bPythonIsHappy = TRUE;
- if (bPythonIsHappy && !PyObject_AsLPWSTR *( obpContextDescription, &pContextDescription )) bPythonIsHappy = FALSE;
- if (!bPythonIsHappy) return NULL;
HRESULT hr;
PY_INTERFACE_PRECALL;
! hr = pIBCE->GetErrorContextDescription( LanguageId, pContextDescription );
! PyObject_FreeLPWSTR *(pContextDescription);
!
PY_INTERFACE_POSTCALL;
if ( FAILED(hr) )
return PyCom_BuildPyException(hr, pIBCE, IID_IBackgroundCopyError );
- // *** The output argument pContextDescription of type "LPWSTR *" was not processed ***
- // The type 'LPWSTR *' (pContextDescription) is unknown.
- Py_INCREF(Py_None);
- return Py_None;
}
--- 107,124 ----
return NULL;
// @pyparm int|LanguageId||Description for LanguageId
! WCHAR *pContextDescription;
DWORD LanguageId;
! if ( !PyArg_ParseTuple(args, "l:GetErrorContextDescription", &LanguageId) )
return NULL;
HRESULT hr;
PY_INTERFACE_PRECALL;
! hr = pIBCE->GetErrorContextDescription( LanguageId, &pContextDescription );
PY_INTERFACE_POSTCALL;
if ( FAILED(hr) )
return PyCom_BuildPyException(hr, pIBCE, IID_IBackgroundCopyError );
+ PyObject *ret = PyString_FromUnicode(pContextDescription);
+ return ret;
}
***************
*** 165,182 ****
if ( pIBCE == NULL )
return NULL;
! // *** The input argument pProtocol of type "LPWSTR *" was not processed ***
! // Please check the conversion function is appropriate and exists!
! LPWSTR * pProtocol;
! PyObject *obpProtocol;
! // @pyparm <o PyLPWSTR *>|pProtocol||Description for pProtocol
! if ( !PyArg_ParseTuple(args, "O:GetProtocol", &obpProtocol) )
return NULL;
- BOOL bPythonIsHappy = TRUE;
- if (bPythonIsHappy && !PyObject_AsLPWSTR *( obpProtocol, &pProtocol )) bPythonIsHappy = FALSE;
- if (!bPythonIsHappy) return NULL;
HRESULT hr;
PY_INTERFACE_PRECALL;
! hr = pIBCE->GetProtocol( pProtocol );
! PyObject_FreeLPWSTR *(pProtocol);
PY_INTERFACE_POSTCALL;
--- 129,138 ----
if ( pIBCE == NULL )
return NULL;
! WCHAR *pProtocol;
! if ( !PyArg_ParseTuple(args, ":GetProtocol") )
return NULL;
HRESULT hr;
PY_INTERFACE_PRECALL;
! hr = pIBCE->GetProtocol( &pProtocol );
PY_INTERFACE_POSTCALL;
***************
*** 184,192 ****
if ( FAILED(hr) )
return PyCom_BuildPyException(hr, pIBCE, IID_IBackgroundCopyError );
- // *** The output argument pProtocol of type "LPWSTR *" was not processed ***
- // The type 'LPWSTR *' (pProtocol) is unknown.
- Py_INCREF(Py_None);
- return Py_None;
}
--- 140,146 ----
if ( FAILED(hr) )
return PyCom_BuildPyException(hr, pIBCE, IID_IBackgroundCopyError );
+ PyObject *ret = PyString_FromUnicode(pProtocol);
+ return ret;
}
Index: PyIBackgroundCopyJob.cpp
===================================================================
RCS file: /cvsroot/pywin32/pywin32/com/win32comext/bits/src/Attic/PyIBackgroundCopyJob.cpp,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -C2 -d -r1.1.2.1 -r1.1.2.2
*** PyIBackgroundCopyJob.cpp 6 Feb 2008 01:51:28 -0000 1.1.2.1
--- PyIBackgroundCopyJob.cpp 6 Feb 2008 09:10:25 -0000 1.1.2.2
***************
*** 429,446 ****
if ( pIBCJ == NULL )
return NULL;
! // *** The input argument pVal of type "LPWSTR *" was not processed ***
! // Please check the conversion function is appropriate and exists!
! LPWSTR * pVal;
! PyObject *obpVal;
! // @pyparm <o PyLPWSTR *>|pVal||Description for pVal
! if ( !PyArg_ParseTuple(args, "O:GetDisplayName", &obpVal) )
return NULL;
- BOOL bPythonIsHappy = TRUE;
- if (bPythonIsHappy && !PyObject_AsLPWSTR_LIST( obpVal, &pVal )) bPythonIsHappy = FALSE;
- if (!bPythonIsHappy) return NULL;
HRESULT hr;
PY_INTERFACE_PRECALL;
! hr = pIBCJ->GetDisplayName( pVal );
! PyObject_FreeLPWSTR_LIST(pVal);
PY_INTERFACE_POSTCALL;
--- 429,438 ----
if ( pIBCJ == NULL )
return NULL;
! WCHAR *pVal;
! if ( !PyArg_ParseTuple(args, ":GetDisplayName") )
return NULL;
HRESULT hr;
PY_INTERFACE_PRECALL;
! hr = pIBCJ->GetDisplayName( &pVal );
PY_INTERFACE_POSTCALL;
***************
*** 448,456 ****
if ( FAILED(hr) )
return PyCom_BuildPyException(hr, pIBCJ, IID_IBackgroundCopyJob );
- // *** The output argument pVal of type "LPWSTR *" was not processed ***
- // The type 'LPWSTR *' (pVal) is unknown.
- Py_INCREF(Py_None);
- return Py_None;
}
--- 440,446 ----
if ( FAILED(hr) )
return PyCom_BuildPyException(hr, pIBCJ, IID_IBackgroundCopyJob );
+ PyObject *ret = PyString_FromUnicode(pVal);
+ return ret;
}
***************
*** 467,476 ****
return NULL;
BOOL bPythonIsHappy = TRUE;
! if (bPythonIsHappy && !PyWinObject_AsBstr(obVal, &Val)) bPythonIsHappy = FALSE;
if (!bPythonIsHappy) return NULL;
HRESULT hr;
PY_INTERFACE_PRECALL;
hr = pIBCJ->SetDescription( Val );
- SysFreeString(Val);
PY_INTERFACE_POSTCALL;
--- 457,465 ----
return NULL;
BOOL bPythonIsHappy = TRUE;
! if (bPythonIsHappy && !PyWinObject_AsWCHAR( obVal, &Val )) bPythonIsHappy = FALSE;
if (!bPythonIsHappy) return NULL;
HRESULT hr;
PY_INTERFACE_PRECALL;
hr = pIBCJ->SetDescription( Val );
PY_INTERFACE_POSTCALL;
***************
*** 478,481 ****
--- 467,471 ----
if ( FAILED(hr) )
return PyCom_BuildPyException(hr, pIBCJ, IID_IBackgroundCopyJob );
+
Py_INCREF(Py_None);
return Py_None;
***************
*** 489,515 ****
if ( pIBCJ == NULL )
return NULL;
! // *** The input argument pVal of type "LPWSTR *" was not processed ***
! // Please check the conversion function is appropriate and exists!
! LPWSTR * pVal;
! PyObject *obpVal;
! // @pyparm <o PyLPWSTR *>|pVal||Description for pVal
! if ( !PyArg_ParseTuple(args, "O:GetDescription", &obpVal) )
return NULL;
- BOOL bPythonIsHappy = TRUE;
- if (bPythonIsHappy && !PyObject_AsLPWSTR_LIST( obpVal, &pVal )) bPythonIsHappy = FALSE;
- if (!bPythonIsHappy) return NULL;
HRESULT hr;
PY_INTERFACE_PRECALL;
! hr = pIBCJ->GetDescription( pVal );
! PyObject_FreeLPWSTR_LIST(pVal);
!
PY_INTERFACE_POSTCALL;
if ( FAILED(hr) )
return PyCom_BuildPyException(hr, pIBCJ, IID_IBackgroundCopyJob );
! // *** The output argument pVal of type "LPWSTR *" was not processed ***
! // The type 'LPWSTR *' (pVal) is unknown.
! Py_INCREF(Py_None);
! return Py_None;
}
--- 479,495 ----
if ( pIBCJ == NULL )
return NULL;
! WCHAR *pVal;
! if ( !PyArg_ParseTuple(args, ":GetDescription") )
return NULL;
HRESULT hr;
PY_INTERFACE_PRECALL;
! hr = pIBCJ->GetDescription( &pVal );
PY_INTERFACE_POSTCALL;
if ( FAILED(hr) )
return PyCom_BuildPyException(hr, pIBCJ, IID_IBackgroundCopyJob );
!
! PyObject *ret = PyString_FromUnicode(pVal);
! return ret;
}
|