JetGetDatabaseInfo 函数

适用于: Windows |Windows Server

JetGetDatabaseInfo 函数

JetGetDatabaseInfo 函数检索有关数据库的各种类型的信息。 当使用 JetGetDatabaseInfo) 附加或联机 (数据库或数据库引擎脱机 (JetGetDatabaseFileInfo) 时,可以调用此 API。

    JET_ERR JET_API JetGetDatabaseInfo(
      __in          JET_SESID sesid,
      __in          JET_DBID dbid,
      __out         void* pvResult,
      __in          unsigned long cbMax,
      __in          unsigned long InfoLevel
    );

parameters

sesid

用于此调用的会话。

dbid

数据库从中检索信息JET_DBID。

pvResult

指向将接收指定信息的缓冲区的指针。 缓冲区的大小(以字节为单位)以 cbMax 传递。

失败时, pvResult 的内容未定义。

pvResult 中存储的信息取决于 InfoLevel

cbMax

pvResult 中传递的缓冲区的大小(以字节为单位)。

InfoLevel

InfoLevel 指定应检索有关指定数据库的信息类型。 它会影响 pvResult 的解释方式。 某些 InfoLevel 仅在 脱机 (JetGetDatabaseFileInfo) 或联机 (JetGetDatabaseInfo) 版本的 API 中可用。

如果提供的 pvResult 缓冲区太小,将根据 InfoLevel 返回JET_errInvalidBufferSize或JET_errBufferTooSmall。

含义

JET_DbInfoCollate

尚不支持并返回默认值。 请勿使用。

JET_DbInfoConnect

这些 InfoLevel 已弃用,当前不受支持。 请勿使用。

JET_DbInfoCountry

尚不支持并返回默认值。 请勿使用。

JET_DbInfoCp

尚不支持并返回默认值。 请勿使用。

JET_DbInfoFilename

pvResult 将解释为字符串缓冲区 (字符 *) 。 建议使用MAX_PATH缓冲区,但不是必需的。 如果缓冲区不够长,将返回JET_errBufferTooSmall。 字符串将填充此 DBID 的数据库路径。

JET_DbInfoFilesize

pvResult 将解释为 DWORD (4 个字节) 。 以页为单位返回数据库的大小。

JET_DbInfoIsam

这些 InfoLevel 已弃用,当前不受支持。 请勿使用。

JET_DbInfoLCID

(Windows XP 及更高版本) 此 InfoLevel 最初指定为:JET_DbInfoLangid (Windows 2000)

pvResult 将被解释为 long。 这会返回与此数据库关联的 LCID (区域设置标识符) 。

JET_DbInfoMisc

pvResult 将解释为 JET_DBINFOMISCJET_DBINFOMISC结构将填充与指定数据库相关的信息。

JET_DbInfoOptions

pvResult 将被解释为 JET_GRBIT (DWORD) 。 这会返回是否在独占模式下打开数据库。 如果数据库处于独占模式,JET_bitDbExclusive将在提供的 JET_GRBIT 中设置,否则将设置为零。 请注意,不返回 JetAttachDatabaseJetOpenDatabase 的其他数据库 grbit 选项。

JET_DbInfoPageSize

仅在 Windows XP 及更高版本上可用。 pvResult 将被解释为无符号长。 这将返回数据库的页大小(以字节为单位)。

JET_DbInfoSpaceAvailable

pvResult 将解释为 DWORD。 这会以页为单位返回数据库的可用空间。

JET_DbInfoSpaceOwned

pvResult 将解释为 DWORD。 这会以页为单位返回数据库拥有的空间。

JET_DbInfoTransactions

pvResult 将被解释为 long。 这将返回一个大于事务可嵌套到的最大级别的值。 如果以嵌套方式 (调用 JetBeginTransaction ,即在同一会话中,在没有提交或回滚) 此值的次数的情况下,在上次调用时,将从 JetBeginTransaction 返回JET_errTransTooDeep。 请注意,Windows 2000、Windows XP 和 Windows Server 2003 中的值为 7。

JET_DbInfoVersion

pvResult 将被解释为 long。 这会返回数据库引擎的本机主版本。 此值是 windows 2000、Windows XP 和 Windows Server 2003 的0x620。

返回值

此函数返回具有以下返回代码之一 的JET_ERR 数据类型。 有关可能的 ESE 错误的详细信息,请参阅 可扩展存储引擎错误错误处理参数

返回代码

说明

JET_errSuccess

操作已成功完成。

JET_errBufferTooSmall

cbMax 中给定的缓冲区大小太小, (或) 不正确,无法保存所需的信息。

JET_errFeatureNotAvailable

请求的 InfoLevel 已JET_DbInfoIsam。 此操作不受支持。

JET_errInvalidBufferSize

cbMax 中给定的缓冲区大小太小, (或) 不正确,无法保存所需的信息。

JET_errInvalidParameter

提供的其中一个参数包含意外值或包含一个值,当与另一个参数的值组合时,该值没有意义。 如果提供的JET_DBID不是) 数据库附加的有效 (,JetGetDatabaseInfo 将返回此错误。 当该函数版本不支持 InfoLevel 请求的 InfoLevel 时,JetGetDatabaseFileInfoJetGetDatabaseInfo 将返回此错误。

成功后,请求的数据将在输出缓冲区中返回。

失败时,输出缓冲区将处于未定义状态。

要求

要求

客户端

需要 Windows Vista、Windows XP 或 Windows 2000 Professional。

服务器

需要 Windows Server 2008、Windows Server 2003 或 Windows 2000 Server。

标头

在 Esent.h 中声明。

Library

使用 ESENT.lib。

DLL

需要ESENT.dll。

Unicode

实现为 JetGetDatabaseInfoW (Unicode) 和 JetGetDatabaseInfoA (ANSI) 。

另请参阅

JET_DBID
JET_ERR
JET_GRBIT
JET_SESID
JET_DBINFOMISC
JET_DBINFOUPGRADE
JetGetDatabaseFileInfo