Sebastian Friebe wrote: > I saw an implementation in C++ using the winAPI DeviceIOControl() > function to do low-level SCSI operations on a USB mass storage device. > It is defined as follows: > > BOOL WINAPI DeviceIoControl( > ... > following settings have been applied: > dwIoControlCode = IOCTL_SCSI_PASS_THROUGH_DIRECT > lpInBuffer = lpOutBuffer = a structure containing several settings > like PATH, TARGET, LUN IDs and CDB[] > array and a buffer for input and output > data > > So if your statement is right, this should even not work under C++, > right? But it does. >
OK, you talked me into it. > Are there maybe some other stuff what makes it different? > I really would like to understand that topic. > Do you know some good references where I can find detailed information > about USB handling under Windows environment? > > My first attempt to get it running under Python looks like this: > > IOCTL_SCSI_PASS_THROUGH_DIRECT = 0x4D014 > That number is correct. > disk_handle=win32file.CreateFile("\\\\.\\j:", > > win32con.GENERIC_READ|win32con.GENERIC_WRITE|win32con.GENERIC_EXECUTE, > win32file.FILE_SHARE_READ > |win32file.FILE_SHARE_WRITE, > None, > win32con.OPEN_EXISTING, > 0, > None); > GENERIC_EXECUTE should not be required, but if your C++ example had it, you might as well keep it. Does the CreateFile succeed? You get a reasonable handle? Note that on Vista you must be elevated to open a volume directly. > data = array.array("B", byte_list) > string = > win32file.DeviceIoControl(disk_handle,IOCTL_SCSI_PASS_THROUGH_DIRECT, data, > 0, None) > > It seems that Windows excepted the control code, cause if I use a > wrong one, I get an SYSTEM ERROR 50 - which is 'The request is not > supported.' > That's fundamentally correct. How are you creating the SCSI_PASS_THROUGH structure in "byte_list"? Are you sure it is 42 bytes? Are you setting all the fields correctly? How are you setting the DataBuffer pointer? Have you set the Length field correctly? I would have guessed it would be easier to use the struct module to build the buffer, rather than array. -- Tim Roberts, [EMAIL PROTECTED] Providenza & Boekelheide, Inc. _______________________________________________ python-win32 mailing list python-win32@python.org http://mail.python.org/mailman/listinfo/python-win32