Mark Mc Mahon <mtnbikingm...@gmail.com> added the comment: You can pass it to any function in the MSI SDK through ctypes.
e.g. def ReadStream(record, field): buf = (ctypes.c_char * 2048)() orig_size = ctypes.sizeof(buf) status = 0 res = [] while status == 0: size = ctypes.c_long(ctypes.sizeof(buf)) status = msidll.MsiRecordReadStream( record.hanlde, field, ctypes.byref(buf), ctypes.byref(size)) res.append(buf.raw) if size.value != orig_size: break data = "".join(res) return data or any of the other functions not currently implemented in _msi.c Some of the other important ones (to me at least) are: - MsiDatabaseGetPrimaryKeys - MsiDatabaseExport - MsiDatabaseImport If the whole MSI SDK is wrapped - then exposing the handles would have no use :). The alternative I have so far is to re-write _msi.c using ctypes (already done), but I thought it would be better if not all of _msi.c had to be re-implemented. One alternative patch is to include those extra functions in _msi.c (though I am not sure I have the C skills to achieve that easily - and it may still miss functionality, and it may have even less chance of being accepted) ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue12026> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com