StorPortLogSystemEvent 函数 (storport.h)

StorPortLogSystemEvent 例程允许微型端口驱动程序完全访问 Windows 内核事件设施的功能,使微型端口驱动程序能够创建事件日志条目,这些条目在排查存储问题时非常有用。 它提供了一个更好的替代现有微型端口驱动程序事件日志记录函数,StorPortLogError

语法

ULONG StorPortLogSystemEvent(
  [in]      PVOID                   HwDeviceExtension,
  [in, out] PSTOR_LOG_EVENT_DETAILS LogDetails,
  [in, out] PULONG                  MaximumSize
);

参数

[in] HwDeviceExtension

指向硬件设备扩展的指针。 这是端口驱动程序代表微型端口驱动程序分配和初始化的每个 HBA 存储区域。 微型端口驱动程序通常在此扩展中存储特定于 HBA 的信息,例如 HBA 的状态和 HBA 的映射访问范围。 在微型端口驱动程序调用 StorPortInitialize后,此区域立即可供微型端口使用。 端口驱动程序在删除设备时释放此内存。

[in, out] LogDetails

包含系统事件日志条目中显示的信息的 STOR_LOG_EVENT_DETAILS 结构。

[in, out] MaximumSize

用于接收微型端口转储数据和字符串的最大组合大小的变量。 仅当函数失败并返回STOR_STATUS_INVALID_BUFFER_SIZE值时才返回。 此参数是可选的。

返回值

返回代码 描述
STOR_STATUS_NOT_IMPLEMENTED
此函数未在活动作系统上实现。
STOR_STATUS_INVALID_PARAMETER
传入了无效参数。
STOR_STATUS_INVALID_IRQL
调用是在 IRQL > DISPATCH_LEVEL 进行的。
STOR_STATUS_INSUFFICIENT_RESOURCES
系统资源不足,无法完成请求。
STOR_STATUS_UNSUPPORTED_VERSION:
指定了不受支持的(例如,更新)版本的STOR_LOG_EVENT_DETAILS结构。 返回后,LogDetails->InterfaceRevision 设置为最新支持的版本。
STOR_STATUS_INVALID_BUFFER_SIZE
传递给函数的缓冲区太大。 返回此值时,MaximumSize 设置为微型端口转储数据和字符串的最大组合大小。
STOR_STATUS_SUCCESS
日志作已成功完成。

言论

若要了解如何充分利用自定义错误代码,请参阅 Storport 错误日志扩展。 必须在 IRQL <= DISPATCH_LEVEL 调用 StorPortLogSystemEvent 例程。 如果传入的STOR_LOG_EVENT_DETAILS版本比此版本支持的版本更高,此函数会将 InterfaceRevision 字段更改为最新支持的版本,并返回STOR_STATUS_UNSUPPORTED_VERSION。 STOR_LOG_EVENT_DETAILS的 InterfaceRevision 字段是一个 32 位值。 但是,仅使用三个最重要的字节进行验证。 保留低字节以区分特定版本的兼容次要变体。 例如,修订版0x00000101结构与实现接口0x00000100修订的 Storport 兼容,尽管可能会丢失一些次要的非关键功能。 如果指定转储数据和字符串的总大小超过允许的最大事件日志条目大小,则 MaximumSize 指向的整数将设置为微型端口转储数据和字符串的最大允许大小,并返回STOR_INVALID_BUFFER_SIZE。 尽管此函数接受路径、目标和 LUN 地址说明符的 ULONG 值,但这些值将被截断为 UCHAR 值,因为 Storport 在内部仅支持这些说明符的 8 位值。

要求

要求 价值
目标平台 普遍
标头 storport.h (包括 Storport.h)
DDI 符合性规则 StorPortIrql(storport)

另请参阅

StorPortLogError