[Python-Dev] Python 2.5.1 (original) (raw)

Alexey Borzenkov snaury at gmail.com
Mon Apr 30 09:47:55 CEST 2007


Hi Martin,

On 4/29/07, "Martin v. Löwis" <martin at v.loewis.de> wrote:

The error Windows reports is ERRORSHARINGVIOLATION. I never understood sharing fully, but it may be that if the file is opened in "exclusive sharing", stat'ing it may fail.

Sharing is actually very easy. If you didn't specify SHARE_READ/SHARE_WRITE/SHARE_DELETE when opening the file and you succeeded, then any process can't read/write/delete the file until you close the handle.

I personally consider it a bug in Windows that you cannot get file attributes if some other process has opened it. Exclusive access should only restrict access to file contents, but not file attributes.

After doing some research I found that it seems to be impossible to use CreateFile for a file that doesn't have SHARE_READ. I played with different combinations and with FLAG_BACKUP_SEMANTICS and nothing helped. However on Windows there's still a possibility to read attributes: use FindFirstFile. _WIN32_FIND_DATA structure seems to have all the necessary fields (attributes, file times, size and full/short filename), and FindFirstFile doesn't care about sharing at all...



More information about the Python-Dev mailing list