2014-02-14 5 views

답변

6

아니요, 링 0 코드에 저장됩니다. 커널 코드는 장치 드라이버 만이 액세스 할 수 있습니다. SysInternals 'Handle 유틸리티와 같이 동적으로 설치되는 종류입니다. 누구도 문서화되지 않은 커널 구조를 리버스 엔지니어링하여 해당 테이블을 찾고 이전 및 이후의 모든 Windows 버전에 대해 해당 코드를 유지하려고합니다. 희망을 갖고.

이것은 의도적으로 사용자 모드 코드에서 벗어났습니다. 프로그램이 그런 종류의 정보를 얻으려고 시도 할 때 어떤 일도 결코 일어나지 않습니다. 계획과 마찬가지로 파일이 잠겨 있는지 확인하십시오. 이는 단순히 멀티 태스킹 운영 체제에서 안정적으로 작동하지 않습니다.

작동한다고 가정하면 IsLocked() 함수를 작성하십시오. 해당 파일이 잠겨 있지 않은 것을 확인하면 거짓을 반환합니다. IsLocked()가 호출자에게 리턴하는 것처럼 스레드를 인터럽트하는 운영 체제 컨텍스트 스위치에 의해 선점되어야합니다. 그리고 파일을 잠그는 다른 프로세스의 다른 쓰레드에 양보한다. 스레드가 다시 시작되면 호출자는 을 거짓으로으로 설정하지만 파일은 잠겨 있습니다. 총 실패 고래. 이러한 버그는 문제를 해결하는 데 엄청나게 어렵습니다. 왜 그런 일이 일어나지 않는지 알 수있을만큼 자주 빈번하지는 않습니다.

잠금 장치는 원자이어야합니다. 올바르게 작동하려면 필수적입니다. 즉, 테스트 및 설정 작업은 중단 불가능해야합니다. Windows에서 매우 쉽게 수행 할 수 있으며 파일을 열면됩니다. 자물쇠를 얻을 수 없으면 실패합니다. 그렇지 않으면 자물쇠를 확보했기 때문에 아무도 열 수 없습니다.

+0

즉, 실제로 내가 찾던 답변 - 건배 : – Moo