我正在尝试读取一些现有和未安装的 esent 数据库文件(如 Windows.edb)。我一直在相当成功地玩一些 edb 文件。但是,当我尝试使用不等于 8192 的 PageSize 打开数据库时,我收到错误消息。
这是我的代码(没有错误处理):
FError := JetSetSystemParameter(@FInstance, nil, JET_paramDatabasePageSize, FPagesize, nil);
FError := JetCreateInstance(@FInstance, 'EDBInstance');
FError := JetInit(@FInstance);
FError := JetBeginSession(FInstance, @FSessionId, nil, nil);
FError := JetAttachDatabase(FSessionId, FFilename, JET_bitDbReadOnly);
只要 FPageSize = 8192,它就可以正常工作。任何其他值(4096、32768)在返回 -1213 代码的 JetInit 调用中都会失败。如果我没有为数据库设置正确的 PageSize 值,我会在 JetAttachDatabase 得到同样的错误,我可以理解。但是我无法理解 JetInit 返回的第一个错误。我做错了什么?我希望 Laurion Burchall 正在阅读这篇文章!:-)
我正在运行 Windows 7 64 位。