[pywin32-checkins] pywin32/win32/src win32transactionmodule.cpp, 1.1, 1.2
OLD project page for the Python extensions for Windows
Brought to you by:
mhammond
From: Roger U. <ru...@us...> - 2007-02-26 17:08:17
|
Update of /cvsroot/pywin32/pywin32/win32/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5160/win32/src Modified Files: win32transactionmodule.cpp Log Message: Add GetTransactionId and OpenTransaction Index: win32transactionmodule.cpp =================================================================== RCS file: /cvsroot/pywin32/pywin32/win32/src/win32transactionmodule.cpp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** win32transactionmodule.cpp 3 Feb 2007 21:07:33 -0000 1.1 --- win32transactionmodule.cpp 26 Feb 2007 17:08:12 -0000 1.2 *************** *** 14,20 **** typedef BOOL (WINAPI *CommitTransactionAsyncfunc)(HANDLE); static CommitTransactionAsyncfunc pfnCommitTransactionAsync=NULL; - typedef BOOL (WINAPI *GetTransactionIdfunc)(HANDLE,LPGUID); static GetTransactionIdfunc pfnGetTransactionId = NULL; typedef BOOL (WINAPI *GetTransactionInformationfunc)(HANDLE,PDWORD,PDWORD,PDWORD,PDWORD,DWORD,LPWSTR); static GetTransactionInformationfunc pfnGetTransactionInformation = NULL; --- 14,23 ---- typedef BOOL (WINAPI *CommitTransactionAsyncfunc)(HANDLE); static CommitTransactionAsyncfunc pfnCommitTransactionAsync=NULL; typedef BOOL (WINAPI *GetTransactionIdfunc)(HANDLE,LPGUID); static GetTransactionIdfunc pfnGetTransactionId = NULL; + typedef HANDLE (WINAPI *OpenTransactionfunc)(DWORD,LPGUID); + static OpenTransactionfunc pfnOpenTransaction = NULL; + + typedef BOOL (WINAPI *GetTransactionInformationfunc)(HANDLE,PDWORD,PDWORD,PDWORD,PDWORD,DWORD,LPWSTR); static GetTransactionInformationfunc pfnGetTransactionInformation = NULL; *************** *** 22,28 **** static SetTransactionInformationfunc pfnSetTransactionInformation = NULL; // static char *keywords[]={"TransactionHandle","IsolationLevel","IsolationFlags","Timeout","Description", NULL}; - typedef HANDLE (WINAPI *OpenTransactionfunc)(DWORD,LPGUID); - static OpenTransactionfunc pfnOpenTransaction = NULL; - // static char *keywords[]={"DesiredAccess","TransactionId", NULL}; typedef HANDLE (WINAPI *OpenResourceManagerfunc)(DWORD,HANDLE,LPGUID); static OpenResourceManagerfunc pfnOpenResourceManager = NULL; --- 25,28 ---- *************** *** 176,179 **** --- 176,224 ---- } + // @pymethod <o PyIID>|win32transaction|GetTransactionId|Returns the transaction's GUID + static PyObject *PyGetTransactionId(PyObject *self, PyObject *args, PyObject *kwargs) + { + CHECK_PFN(GetTransactionId); + PyObject *obtrans; + HANDLE htrans; + BOOL ret; + GUID guid; + static char *keywords[]={"TransactionHandle", NULL}; + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O:GetTransactionId", keywords, + &obtrans)) // @pyparm <o PyHANDLE>|TransactionHandle||Handle to a transaction + return NULL; + if (!PyWinObject_AsHANDLE(obtrans, &htrans, FALSE)) + return NULL; + Py_BEGIN_ALLOW_THREADS + ret=(*pfnGetTransactionId)(htrans, &guid); + Py_END_ALLOW_THREADS + if (!ret) + return PyWin_SetAPIError("GetTransactionId"); + return PyWinObject_FromIID(guid); + } + + // @pymethod <o PyHANDLE>|win32transaction|OpenTransaction|Creates a handle to an existing transaction + static PyObject *PyOpenTransaction(PyObject *self, PyObject *args, PyObject *kwargs) + { + CHECK_PFN(OpenTransaction); + PyObject *obguid; + HANDLE htrans; + DWORD access; + GUID guid; + static char *keywords[]={"DesiredAccess","TransactionId", NULL}; + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "kO:OpenTransaction", keywords, + &access, // @pyparm int|DesiredAccess||Combination of TRANSACTION_* access rights + &obguid)) // @pyparm <o PyIID>|TransactionId||GUID identifying the transaction + return NULL; + if (!PyWinObject_AsIID(obguid, &guid)) + return NULL; + Py_BEGIN_ALLOW_THREADS + htrans=(*pfnOpenTransaction)(access, &guid); + Py_END_ALLOW_THREADS + if (htrans==INVALID_HANDLE_VALUE) + return PyWin_SetAPIError("OpenTransaction"); + return PyWinObject_FromHANDLE(htrans); + } + // @module win32transaction|Module wrapping Kernal Transaction Manager functions, as used with *************** *** 192,195 **** --- 237,244 ---- // @pymeth CommitTransactionAsync|Commits a transaction asynchronously { "CommitTransactionAsync", (PyCFunction)PyCommitTransactionAsync, METH_KEYWORDS|METH_VARARGS}, + // @pymeth GetTransactionId|Returns the transaction's GUID + { "GetTransactionId", (PyCFunction)PyGetTransactionId, METH_KEYWORDS|METH_VARARGS}, + // @pymeth OpenTransaction|Creates a handle to an existing transaction + { "OpenTransaction", (PyCFunction)PyOpenTransaction, METH_KEYWORDS|METH_VARARGS}, { NULL, NULL } }; *************** *** 229,291 **** } - - /* Transaction access rights used with OpenTransaction: - TRANSACTION_QUERY_INFORMATION - TRANSACTION_SET_INFORMATION - TRANSACTION_ENLIST - TRANSACTION_COMMIT - TRANSACTION_ROLLBACK - TRANSACTION_GENERIC_READ - TRANSACTION_GENERIC_WRITE - TRANSACTION_GENERIC_EXECUTE - TRANSACTION_ALL_ACCESS - TRANSACTION_RESOURCE_MANAGER_RIGHTS - TRANSACTION_PROPAGATE - */ - - /* - Transaction manager access rights used with OpenTransactionManager - TRANSACTIONMANAGER_QUERY_INFORMATION - TRANSACTIONMANAGER_SET_INFORMATION - TRANSACTIONMANAGER_RECOVER - TRANSACTIONMANAGER_RENAME - TRANSACTIONMANAGER_CREATE_RM - TRANSACTIONMANAGER_GENERIC_READ - TRANSACTIONMANAGER_GENERIC_WRITE - TRANSACTIONMANAGER_GENERIC_EXECUTE - TRANSACTIONMANAGER_ALL_ACCESS - */ - - /* - Resource manager rights: - RESOURCEMANAGER_QUERY_INFORMATION - RESOURCEMANAGER_SET_INFORMATION - RESOURCEMANAGER_RECOVER - RESOURCEMANAGER_ENLIST - RESOURCEMANAGER_GET_NOTIFICATION - RESOURCEMANAGER_GENERIC_READ - RESOURCEMANAGER_GENERIC_WRITE - RESOURCEMANAGER_GENERIC_EXECUTE - RESOURCEMANAGER_ALL_ACCESS - */ - - /* NOTIFICATION_MASK enum: - TRANSACTION_NOTIFY_MASK - TRANSACTION_NOTIFY_PREPREPARE - TRANSACTION_NOTIFY_PREPARE - TRANSACTION_NOTIFY_COMMIT - TRANSACTION_NOTIFY_ROLLBACK - TRANSACTION_NOTIFY_PREPREPARE_COMPLETE - TRANSACTION_NOTIFY_PREPARE_COMPLETE - TRANSACTION_NOTIFY_COMMIT_COMPLETE - TRANSACTION_NOTIFY_ROLLBACK_COMPLETE - TRANSACTION_NOTIFY_RECOVER - TRANSACTION_NOTIFY_SINGLE_PHASE_COMMIT - TRANSACTION_NOTIFY_DELEGATE_COMMIT - TRANSACTION_NOTIFY_RECOVER_QUERY - TRANSACTION_NOTIFY_ENLIST_PREPREPARE - TRANSACTION_NOTIFY_LAST_RECOVER - TRANSACTION_NOTIFY_INDOUBT - TRANSACTION_NOTIFY_TM_ONLINE - TRANSACTION_NOTIFY_REQUEST_OUTCOME - */ --- 278,279 ---- |