Thanks for your reply Ned! I tried this your suggestion and this is what it complains...
os_inst_bytes = struct.pack('7BI512s', 0, 0x51, 0x10, 5, 0, 0xD, 0x80, 0, '') --------------------------------------------------------------------------- error Traceback (most recent call last) <ipython-input-6-d36f45a8d3e6> in <module>() ----> 1 os_inst_bytes = struct.pack('7BI512s', 0, 0x51, 0x10, 5, 0, 0xD, 0x80, 0, "") error: argument for 's' must be a bytes object In [7]: And about the bytearray() call, I want to pass a mutable object to the IOCTL to be able to get the data back from the driver. Without bytearray(), the ioctl with mutable flag set to 1 would complain. I tried to use the p format specifier with pack after converting the array object to byte stream. Packing seems fine. However, I cant seem to unpack. In [1]: import array In [2]: import struct In [3]: data = array.array('B', (1 for x in range(5))) In [4]: data_bytes = data.tobytes() In [5]: os_inst_bytes = struct.pack('7BIp', 0, 0x51, 0x10, 5, 0, 0xD, 0x80, 0, data_bytes) In [6]: In [6]: os_inst = bytearray(os_inst_bytes) In [7]: result = struct.unpack('7B', os_inst[0:7]) In [8]: print(result) (0, 81, 16, 5, 0, 13, 128) In [9]: result = struct.unpack('I', os_inst[7:11]) In [10]: print(result) (0,) In [11]: result = struct.unpack('5s', os_inst[11:16]) --------------------------------------------------------------------------- error Traceback (most recent call last) <ipython-input-11-da14a6693435> in <module>() ----> 1 result = struct.unpack('5s', os_inst[11:16]) error: unpack requires a bytes object of length 5 In [12]: -- https://mail.python.org/mailman/listinfo/python-list