위치를 설정할 때 SetFilePointerEx
을 사용할 수있었습니다.SetFilePointerEx를 사용하여 실제 디스크의 끝으로 이동하려면 어떻게합니까?
SetFilePointerEx(PD, 512, @PositionVar, FILE_BEGIN);
SetFilePointerEx(PD, 0, @PositionVar, FILE_CURRENT);
둘 다 작동; 나는 위치를 설정하고 현재 위치를 확인할 수도 있습니다. 하지만 두 번째 매개 변수가 무엇인지에 관계없이 설명서마다 FILE_END
을 설정하면 세 번째 매개 변수에 대한 포인터를 제공하는지 여부에 관계없이 많은 다른 작업을 실패없이 사용할 수있는 유효한 핸들에서도 실패합니다. 예를 들어
: 내가 넣어 무엇이든
SetFailed := SetFilePointerEx(PD, 0, @PositionVar, FILE_END);
SetFailed := SetFilePointerEx(PD, 0, nil, FILE_END);
, 그것은 실패합니다. 나는 물리적 인 디스크에 대한 핸들을 가지고 일하고 있는데, 확실히 끝이있다. SetFilePointer
은 잘 작동하지만, 내가 원하는 것보다 조금 더 문제가 있습니다.
세계의 끝은 아니지만, 무슨 일이 일어나고 있는지.
닉 편집 롭, 제목은 반드시 정확하지는 않습니다. 나는 단지 물리적 인 매체로부터 충분한 공간을 얻으려고 노력했다. 이론을 통해이 방법을 통해 수행 할 수있는 것은 더 이상 유효한 방법으로 보이지 않습니다. 이전 제목에서 문제가있는 사람을위한 검색어를 검색하지만 누군가가이 특정 질의 응답 세션에서 도움을 얻지 못한다고해도 게시물 정리에 감사드립니다. 누구든지 투표를 해 주셔서 마침내 투표 할 수 있습니다 :) – SuicideClutchX2
@Suicide,이 질문에 대한 답변을 읽어보십시오. http://stackoverflow.com/questions/4567422/ SetFilePointer가 작동하지 않는다고 전적으로 말씀하셨습니다. FILE_END 및 디스크 장치를 사용하여 int64를 사용하여 원하는 위치로 파일 포인터를 이동할 수있는 루틴을 제공했으며 David는 Hacky 코드를 사용하지 않고 장치 크기를 가져 오는 좋은 방법을 보여주었습니다. 왜 다시 같은 질문을해야합니까? –
은 개정 전보다 더 좋았습니다 –