CreateFile() DesiredAccess vs SharedMode 관계

출처 →
https://kuaaan.tistory.com/407?category=91638

DesiredAccess는 기존의 열린 SharedMode의 부분집합이어야 하고
SharedMode는 기존의 열린 DesiredMode의 전체집합이어야 한다.


hFile1 = CreateFile(argv[1], GENERIC_READ, FILE_SHARE_READ);
hFile2 = CreateFile(argv[1], GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE);
  성공 hFile1(GENERIC_READ)로 열렸기 때문에 hFile2의 SharedMode가 이를 만족
hFile2 = CreateFile(argv[1], GENERIC_READ, FILE_SHARE_WRITE);
  실패 hFile1(GENERIC_READ)인데 SharedMode로 FILE_SHARE_WRITE이므로


hFile1 = CreateFile(argv[1], GENERIC_READ | GENERIC_WRITE,
                         FILE_SHARE_READ);
hFile2 = CreateFile(argv[1], GENERIC_READ,
                         FILE_SHARE_WRITE);
  실패 hFile2의 SharedMode가 hFile1의 DesiredAccess를 포함한 셋이어야 하는데 아니므로. 즉 SharedMode는 기존의 오픈된 DesiredAccess의 전체집합
hFile2 = CreateFile(argv[1], GENERIC_READ,
                         FILE_SHARE_READ);
  실패 바로 위와 같은 이유


hFile1 = CreateFile(argv[1], GENERIC_READ | GENERIC_WRITE,
                         FILE_SHARE_READ | FILE_SHARE_WRITE );
hFile1 = CreateFile(argv[1], GENERIC_READ,
                         FILE_SHARE_READ | FILE_SHARE_WRITE );
  성공 DesiredAccess는 기존의 오픈된 SharedMode의 부분집합



댓글

이 블로그의 인기 게시물

[WinAPI] 모달리스 다이얼로그 설명

[WinDbg] Debugging a stack overflow

[WinDbg] first-chance, second-chance Exception