[pywin32-checkins] /hgroot/pywin32/pywin32: Add buffer size parameter for ReadEvent...
OLD project page for the Python extensions for Windows
Brought to you by:
mhammond
From: <pyw...@li...> - 2015-04-06 05:37:30
|
changeset 955b7db466fe in /hgroot/pywin32/pywin32 details: http://pywin32.hg.sourceforge.net/hgweb/pywin32/pywin32/hgroot/pywin32/pywin32?cmd=changeset;node=955b7db466fe summary: Add buffer size parameter for ReadEventLog (patch #143 from cristi fati) diffstat: win32/src/win32evtlog.i | 35 ++++++++++++++++++++++++----------- 1 files changed, 24 insertions(+), 11 deletions(-) diffs (60 lines): diff -r f89c0a9724ca -r 955b7db466fe win32/src/win32evtlog.i --- a/win32/src/win32evtlog.i Sun Apr 05 23:21:50 2015 -0400 +++ b/win32/src/win32evtlog.i Mon Apr 06 01:36:12 2015 -0400 @@ -286,10 +286,9 @@ return ret; } -PyObject *MyReadEventLog( HANDLE hEventLog, DWORD dwReadFlags, DWORD dwRecordOffset) +PyObject *_MyReadEventLog(HANDLE hEventLog, DWORD dwReadFlags, DWORD dwRecordOffset, DWORD nNumberOfBytesToRead) { - DWORD needed, read; - needed = 1024; + DWORD needed = nNumberOfBytesToRead, read; BYTE *buf; BOOL ok; while (1) { @@ -324,6 +323,27 @@ return ret; } +#define EVTLOG_READ_BUF_LEN_MAX 0x7ffff +#define EVTLOG_READ_BUF_LEN_DEFAULT 0x1000 + +// @pyswig [object,...]|ReadEventLog|Reads some event log records. +// @rdesc If there are no event log records available, then an empty list is returned. +PyObject *MyReadEventLog(PyObject *self, PyObject *args) { + HANDLE hEventLog = INVALID_HANDLE_VALUE; + DWORD dwReadFlags, dwRecordOffset, nNumberOfBytesToRead = EVTLOG_READ_BUF_LEN_DEFAULT; + if (!PyArg_ParseTuple(args, "O&kk|k:ReadEventLog", + PyWinObject_AsHANDLE, &hEventLog, // @pyparm <o Py_HANDLE>|Handle||Handle to a an opened event log (see <om win32evtlog.OpenEventLog>) + &dwReadFlags, // @pyparm int|Flags||Reading flags + &dwRecordOffset, // @pyparm int|Offset||Record offset to read (in SEEK mode). + &nNumberOfBytesToRead)) // @pyparm int|Size|4096|Output buffer size. + return NULL; + if (nNumberOfBytesToRead == 0) + nNumberOfBytesToRead = EVTLOG_READ_BUF_LEN_DEFAULT; + if (nNumberOfBytesToRead > EVTLOG_READ_BUF_LEN_MAX) + nNumberOfBytesToRead = EVTLOG_READ_BUF_LEN_MAX; + return _MyReadEventLog(hEventLog, dwReadFlags, dwRecordOffset, nNumberOfBytesToRead); +} + PyObject * MyReportEvent( HANDLE hEventLog, WORD wType, // event type to log WORD wCategory, // event category @@ -454,14 +474,7 @@ WCHAR *fileName // @pyparm <o PyUnicode>|fileName||The filename to open ); -// @pyswig [object,...]|ReadEventLog|Reads some event log records. -// @rdesc If there are no event log records available, then an empty list is returned. -%name (ReadEventLog) PyObject *MyReadEventLog ( - HANDLE hEventLog, // @pyparm int|handle||The handle of the event log to read. - DWORD dwReadFlags, // @pyparm int|flags||The read flags - DWORD dwRecordOffset // @pyparm int|offset||The offset - ); - +%native (ReadEventLog) MyReadEventLog; // @pyswig |ReportEvent|Reports an event %name (ReportEvent) PyObject *MyReportEvent ( |