Delphi THandleStream中的CreateFile Windows错误
|
我有一个从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;
该句柄值与msdn上描述为ERROR_INCOMPATIBLE_WITH_GLOBAL_SHORT_NAME_REGISTRY_SETTING的错误代码相匹配,但这似乎很少见。正确设置了aDrive参数(格式为\\\\。\\ x:)。
这是怎么了,我该如何设法获得有效的文件句柄?
没有找到相关结果
已邀请:
2 个回复
担每棱绰
不返回错误代码-它返回有效的句柄或INVALID_HANDLE_VALUE(-1)。这是带有错误检查的
函数调用的标准用法:
孝箱捆讨