[Python-Dev] Python 2.5.1 (original) (raw)
Alexey Borzenkov snaury at gmail.com
Tue May 1 09:36:47 CEST 2007
- Previous message: [Python-Dev] Python 2.5.1
- Next message: [Python-Dev] Python 2.5.1
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 5/1/07, "Martin v. Löwis" <martin at v.loewis.de> wrote:
> After doing some research I found that it seems to be impossible to > use CreateFile for a file that doesn't have SHAREREAD. I played with > different combinations and with FLAGBACKUPSEMANTICS and nothing > helped. However on Windows there's still a possibility to read > attributes: use FindFirstFile. WIN32FINDDATA 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... So what about GetFileAttributesEx? What are the conditions under which I can successfully invoke it?
Seems to have the same problems as with CreateFile(...):
// 1.cc #include <windows.h> #include <stdio.h>
int main(int argc, char** argv) { WIN32_FILE_ATTRIBUTE_DATA data; if(!GetFileAttributesEx("pagefile.sys", GetFileExInfoStandard, (LPVOID)&data)) { char buffer[1024]; FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, GetLastError(), 0, buffer, 1024, NULL); printf("Error %d: %s\n", GetLastError(), buffer); return 1; } printf("Success\n"); return 0; }
// 2.cc #include <windows.h> #include <stdio.h>
int main(int argc, char** argv) { WIN32_FIND_DATA data; if(INVALID_HANDLE_VALUE == FindFirstFile("pagefile.sys", &data)) { char buffer[1024]; FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, GetLastError(), 0, buffer, 1024, NULL); printf("Error %d: %s\n", GetLastError(), buffer); return 1; } printf("Success\n"); return 0; }
C:>C:\3\1.exe Error 32: The process cannot access the file because it is being used by another process.
C:>C:\3\2.exe Success
- Previous message: [Python-Dev] Python 2.5.1
- Next message: [Python-Dev] Python 2.5.1
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]