У меня есть простой класс, производный от THandleStream, который я использую для редактирования необработанного тома.Я вызываю функцию Windows createfile (), чтобы открыть диск, но функция никогда не возвращает действительный дескриптор, скорее экзотический код ошибки ( 348 во время отладки и 304 во время выполнения, ноошибка не возникает, просто значение дескриптора выглядит странно).вот что я делаю:
Constructor TDiskStream.Create(Const aDrive: String);
Var
Hdl: Cardinal;
A,B: Int64;
Begin
Hdl := CreateFile( PChar(ADrive),
GENERIC_WRITE,
FILE_SHARE_READ Or FILE_SHARE_WRITE,
0, OPEN_EXISTING, 0, 0);
Inherited Create( Hdl );
GetDiskFreeSpaceEx( PChar( RightStr(ADrive,2) + '\'), A, FSize, @B );
End;
Значение дескриптора соответствует коду ошибки, описанному как ERROR_INCOMPATIBLE_WITH_GLOBAL_SHORT_NAME_REGISTRY_SETTING в msdn, но, похоже, это очень редкоПараметр aDrive задан правильно (в формате \\. \ X: ).
Что здесь не так, как я могу получить мой действительный дескриптор файла