물리 디스크와 통신하기 – 2. 올바른 핸들 얻어오기

지난번 글에서는 간단하게 ‘C드라이브의 부모 저장장치’, ‘운영체제의 0번 저장장치’ 정도로 표현했지만 실제로 통신을 하기 위해서는 해당 드라이버에 대한 올바른 핸들이 필요하다. 명령어 셋 유형에 따라 올바른 핸들을 구해보자. ★ 드라이브의 부모 저장장치 \\.\★: 형식으로 경로를 지정해 CreateFile로 파일을 연 뒤, IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS 컨트롤 코드로 저장장치 번호를 알아낸다. 이 뒤로는 명령어 셋을 검사해 2번이나 3번 항목에 따르면 […]

물리 디스크와 통신하기(NVM express, ATA, SAT, SCSI)

들어가기 전에 미리 이야기하지만, 리눅스에 대해서는 이미 수많은 문서가 있으므로 이 시리즈에서는 윈도에 대해서만 다룬다. 유저 레벨 프로그래밍은 당연하게도 윈도에 대한 문서가 더 많다. 그러나 특이하게도 저수준 프로그래밍으로 들어가면 윈도 방면 문서는 거의 존재가 사라지는 수준이다. 리눅스 관련해서는 굳이 이미 있는 글들과 별 차이가 없을 글을 올릴 가치가 느껴지지 않기 때문에 생략한다. 프로그래밍을 하다 보면 […]