JetGetSystemParameter 函数

适用于: Windows |Windows Server

JetGetSystemParameter 函数

JetGetSystemParameter 函数读取数据库引擎的大量配置设置。

    JET_ERR JET_API JetGetSystemParameter(
      __in          JET_INSTANCE instance,
      __in          JET_SESID sesid,
      __in          unsigned long paramid,
      __in_out_opt  JET_API_PTR* plParam,
      __out_opt     JET_PSTR szParam,
      __in          unsigned long cbMax
    );

parameters

instance

用于此调用的实例。

对于 Windows 2000,此参数将被忽略,应始终为 NULL

对于 Windows XP 和更高版本,此参数有点重载。 如果引擎在仅支持一个实例的 Windows 2000 兼容模式 (旧模式) 运行,则此参数可以为 NULL ,也可能包含 JetInit 返回的实际实例。 在任一情况下,所有系统参数设置都从该实例中读取。 如果引擎在多实例模式下运行,此参数可以是 NULL ,也可以是指向使用 JetInitJetCreateInstance 创建的实例的指针。 如果此参数为 NULL ,则读取全局系统参数设置 (或默认) 。 如果此参数为实例,则读取该实例的系统参数设置。

sesid

用于此调用的会话。

指定后,将忽略指定的实例,并使用与会话关联的实例。

paramid

要读取的系统参数的 ID。

有关 系统参数 及其属性的完整列表,请参阅系统参数。

plParam

如果系统参数为整数类型,则接收所选系统参数的值的输出缓冲区。

szParam

如果系统参数为字符串类型,则接收所选系统参数的值的输出缓冲区。

cbMax

字符串输出缓冲区的最大大小(以字节为单位)。

返回值

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

返回代码

说明

JET_errSuccess

操作已成功完成。

JET_errClientRequestToStopJetService

无法完成操作,因为由于调用 JetStopService,与会话关联的实例上的所有活动都已停止。

JET_errInitInProgress

无法完成操作,因为正在初始化与会话关联的实例。

JET_errInstanceUnavailable

无法完成该操作,因为与会话关联的实例遇到一个致命错误,该错误要求撤销对所有数据的访问以保护该数据的完整性。 此错误仅由 Windows XP 和更高版本返回。

JET_errInvalidParameter

提供的其中一个参数包含意外值或包含一个值,当与另一个参数的值组合时,该值没有意义。

在以下情况下 ,JetGetSystemParameter 可能会发生这种情况:

  • 指定的系统参数 ID 无效或不受支持的。

  • 指定的系统参数要求提供整数输出缓冲区,并且输出缓冲区指针为 NULL

  • 指定的系统参数需要提供字符串输出缓冲区,并且输出缓冲区指针为 NULL

    Windows Vista: 这只能在 Windows Vista 和更高版本中发生。

  • 指定的系统参数需要提供字符串输出缓冲区,并且该输出缓冲区的大小太小,无法接受以 null 结尾的字符串。

    Windows Vista: 这只能在 Windows Vista 和更高版本中发生。

  • 无法读取指定的系统参数,因为它是只读的。

  • 指定的系统参数仅为全局参数,并且已尝试读取该系统参数的实例特定值。 这只能在 Windows XP 和更高版本中发生。

  • 指定的系统参数仅针对每个实例,并且已尝试读取该系统参数的全局值。 这只能在 Windows XP 和更高版本中发生。

JET_errNotInitialized

无法完成操作,因为尚未初始化与会话关联的实例。

JET_errRestoreInProgress

无法完成操作,因为正在与会话关联的实例上执行还原操作。

JET_errTermInProgress

无法完成操作,因为与会话关联的实例正在关闭。

JET_errInvalidSesid

会话句柄无效或引用已关闭的会话。 并非所有情况下都返回此错误。 仅会尽力验证句柄。

JET_errInvalidInstance

实例句柄无效或引用已关闭的实例。 并非所有情况下都返回此错误。 仅会尽力验证句柄。

Windows Vista: 此错误仅由 Windows Vista 和更高版本返回。

JET_wrnBufferTruncated

操作成功完成,但输出缓冲区太小,无法接收整个系统参数设置。

输出缓冲区已填充尽可能多的系统参数设置。 如果输出缓冲区的长度至少为一个字符,则该输出缓冲区中的字符串将以 null 结尾。

注意 并非所有版本都返回此错误。 有关详细信息,请参阅“备注”部分。

JET_errBufferTooSmall

操作失败,因为输出缓冲区太小,无法接收整个系统参数设置。

注意 在某些情况下,不会返回此错误以保持应用程序兼容性。 有关详细信息,请参阅“备注”部分。

Windows Vista: 此错误仅由 Windows Vista 和更高版本返回。

成功后,适用于所请求系统参数的输出缓冲区将设置为该系统参数的值。

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

备注

此 API 中存在一个在所有版本中都存在的重要问题。 如果请求了具有字符串值的系统参数,并且输出缓冲区太小,无法接收整个系统参数设置,则不会返回JET_wrnBufferTruncated。 将改为返回JET_errSuccess。 如果返回的字符串的长度等于输出缓冲区的大小减去 NULL 终止符,则调用方应像返回JET_wrnBufferTruncated一样做出反应。 如果指定了零大小的字符串输出缓冲区,则调用方应像返回JET_errInvalidParameter一样做出反应。

要求

要求

客户端

需要 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

实现为 JetGetSystemParameterW (Unicode) 和 JetGetSystemParameterA (ANSI) 。

另请参阅

JET_API_PTR
JET_ERR
JET_INSTANCE
JET_SESID
JetCreateInstance
JetInit
JetSetSystemParameter
JetStopService
系统参数