Как я могу использовать SetFilePointerEx, чтобы перейти к концу физического диска? - PullRequest
1 голос
/ 02 января 2011

Я смог использовать 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 работает просто отлично, но это немного больше проблем, чем хотелось бы.

Это не конец света, а то, что происходит.

1 Ответ

3 голосов
/ 02 января 2011

Вы не можете сделать это, как вы узнали.Вы должны искать с самого начала или текущего.Используйте DeviceIoControl, чтобы узнать размер устройства.

...