본문 바로가기

프로그래밍/Windows Device Driver

[Windows Driver] 커널 파일 저장 될 때의 파일 길이 구하기

반응형

 

scanner의 데이터를 볼 경우 저장된 값 이외에 쓰레기 값들이 들어온다.

이 이유는 드라이버 개발자를 위한 윈도우 파일 시스템의 책 내용에서 추측할 수 있는데 책에는 이렇게 나와 있다.


저장되는 파일의 크기는 stack location의 parameter의 union 구조체에 저장 되어 있는데(parameters.Write.Length) 이 크기가 실제 데이터 크기가 아니란다. 항상 페이지 크기로 설정 되어 있기 때문이란다.(0x10000)

그렇기에 실제 크기를 알고자 할 경우 FSRTL_COMMON_FCB_HEADER 구조체에서 파일 크기와 관련된 멤버 변수를 추출해야 한단다.

FcbHeader = currenIrpStack->FileObject->FsContext , size = 
FcbHeader->FileSize.LowPart

이렇게 구해오랜다.

 

반응형