LSUpdate

【勇芳软件工作室】汉化HomePreviousNext

注意:这是Microsoft Windows的将来版本中将支持的技术的初步文档。

LSUpdate功能更新许可的应用程序软件和许可证系统之间的同步。

LS_STATUS_CODE LS_API_ENTRY LSUpdate(

LS_HANDLE 【LicenseHandle】,//处理许可上下文
LS_ULONG 【TotUnitsConsumed】,//在这个句柄上下文中消耗的单位
LS_ULONG 【TotUnitsReserved】,//运行应用程序所需的单位
LS_STR 【*LogComment】,//指向与请求相关联的可选注释的指针
LS_CHALLENGE 【*挑战】,//指向挑战结构的指针
LS_ULONG 【*TotUnitsGranted】//指向授予的总单位数
); 

参数

【LicenseHandle】

[in]指定许可上下文的句柄。该参数必须是使用LSRequest 函数创建的句柄。

【TotUnitsConsumed】

[in]指定自LSRequest函数的初始调用以来,此句柄上下文中消耗的单位总数。您可以在应用程序中指定此许可证策略属性。LS_DEFAULT_UNITS的值表示许可证系统应使用自己的许可证策略机制来确定适当的值。如果返回错误,则不会消耗单位。

如果【TotUnitsConsumed】超过保留的单位数,则返回错误LS_INSUFFICIENT_UNITS,其余单位将被使用。

【TotUnitsReserved】

[in]指定要保留的单位总数。如果从LSRequest函数初始调用或上次调用LSUpdate函数起不需要额外的单位,则此参数应为【TotUnitsGranted】参数中返回的当前总计。总预留包括消耗的单位。也就是说,如果应用程序请求100个单位,然后消耗20个单位,那么仍然有100个单位保留,但只有80个可用于消费。

如果需要额外的单位,应用程序必须计算新的总计【TotUnitsReserved】.您可以指定常量LS_DEFAULT_UNITS,但不会分配任何其他单位。

许可证系统验证所要求的单位数量是否存在,并且可以保留这些单位,但是这些单位此时不会消耗。该值可能小于LSRequest请求的原始号码,表示比原来预期要求的单位少。

【LogComment】

[in]指向可选字符串,指示许可证系统将与请求相关联的注释。如果支持并启用日志记录,许可证系统可以记录注释。如果返回错误,许可证系统可以记录错误和注释,但不能保证。如果不指定字符串,则该值必须为LS_NULL。

【挑战】

[in/out]指向挑战结构。此结构中也将返回挑战响应。

【TotUnitsGranted】

[out]指向LS_ULONG值,返回自初始许可证请求以来授予的总单位数。给定【TotUnitsReserved】参数输入值和返回的状态代码,下表描述了【TotUnitsGranted】返回值:

 【TotUnitsReserved】 
返回状态码LS_DEFAULT_UNITS其他(具体计数)
LS_SUCCESS(A)(C)
LS_INSUFFICIENT_UNITS(B)(D)
其他错误(E)(E)

【TotUnitsGranted】返回值:

(A)与授予的许可证相当的默认单位数。

(B)请求软件可用的最大单位数。这可以小于正常默认值。

(C)用于批准请求的单位数。该值可能与要求的实际单位不同。例如,许可证政策只允许增加5个单位;因此,七个单位的要求将导致10个单位的拨款。

(D)请求软件可用的最大单位数。这可以或多或少是所要求的单位。

(E)返回零。

返回值

如果函数成功,返回值为LS_SUCCESS。

如果函数失败,则返回值为状态码。有关扩展错误信息,请调用LSGetMessage 返回与状态【码】对应的状态【文本】.LSGetMessage功能可能会返回以下状态代码之一:

含义
LS_BAD_HANDLE呼叫中使用的句柄没有描述有效的许可证系统上下文。
LS_INSUFFICIENT_UNITS许可证系统无法找到足够的可用许可资源来完成请求。
LS_LICENSE_TERMINATED授权系统已经确定用于满足先前请求的资源不再授予呼叫软件。
LS_AUTHORIZATION_UNAVAILABLE许可证制度没有许可资源来完成请求。
LS_LICENSE_UNAVAILABLE许可证制度具有可以满足请求的许可资源,但在请求时它们不可用。
LS_RESOURCES_UNAVAILABLE由于资源不足(如内存),请求无法完成。
LS_NETWORK_UNAVAILABLE网络不可用
LS_LICENSE_EXPIRED与当前上下文关联的许可证已过期。这可能是由于许可证的时间限制。
LS_BAD_ARG一个或多个参数是不正确的。

备注

您的应用程序应定期调用LSUpdate功能,以验证当前许可证是否仍然有效。应用程序可以使用LSQuery函数来确定当前许可上下文的正确时间间隔。每小时一次的指导可能是适当的,最短间隔为15分钟。有关更多信息,请咨询许可证系统供应商。

LSUpdate功能验证许可证系统上下文没有从许可软件预期的更改。LSUpdate功能可以确定授予指定句柄的许可资源是否仍为此应用程序保留。在分布式许可证系统中,错误可能表示暂时的网络中断。它还可以确定许可证系统是否已经释放授予指定句柄的许可资源。错误指示软件不再具有以典型方式执行的授权。

LSUpdate函数的调用还可以指示当前的许可上下文已过期。例如,在时间有限的许可证策略的情况下,它返回警告状态LS_LICENSE_EXPIRED。

如果【TotUnitsReserved】参数中请求的新单位数量大于可用数量,则更新请求将失败,并返回错误LS_INSUFFICIENT_UNITS。

如果呼叫成功完成,则【TotUnitsGranted】参数中返回的值表示授予的单位当前总数。

如果LSUpdate返回错误,则不会返回质询响应。应用软件应该准备好处理供应商特定的错误条件(如果出现)。如果返回任何错误,仍然需要调用LSRelease函数。

也可以看看

LS_CHALLENGE,LSGetMessage,LSQuery,LSRelease,LSRequest