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 ,也可以是指向使用 JetInit 或 JetCreateInstance 创建的实例的指针。 如果此参数为 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
系统参数