open で errno = 13
ファイルにより,open で errno に 13 EACCES Permission denied が設定される.
bool Get_fstat (LPCTSTR name,struct stat* fs) {
if (fs == NULL) { return false ; }
int fh = _topen(name,O_RDONLY) ;
if (fh < 0) { i_Dump(errno) ; }
if (fh < 0) { return false ; }
memset(fs,0,sizeof(struct stat)) ;
int ret = fstat(fh,fs) ;
_close(fh) ;
return (ret == 0) ;
}
__FILE__ などは期待した動作だが,c:\pagefile.sys でエラーとなった.
VC 6 では,~\VC98\CRT\SRC\OPEN.C で CreateFile を呼出している.
その時の値は,
fileaccess 0x80000000
fileattrib 0x00000080
filecreate 0x00000003
fileshare 0x00000003
osfh 0x0013fef0
+ path 0x000326d1 “c:\pagefile.sys”
+ &SecurityAttributes 0x0013fdbc