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值时,才返回 。 此参数可选。
返回值
返回代码 | 说明 |
---|---|
|
此函数未在活动操作系统上实现。 |
|
传入了无效参数。 |
|
调用是在 IRQL > DISPATCH_LEVEL 进行的。 |
|
系统资源不足,无法完成请求。 |
|
例如,指定了不受支持的 (STOR_LOG_EVENT_DETAILS结构的较新) 版本。 返回此项时,LogDetails->InterfaceRevision 将设置为支持的最新版本。 |
|
传递给函数的缓冲区太大。 返回此值时,MaximumSize 设置为微型端口转储数据和字符串的最大组合大小。 |
|
日志操作已成功完成。 |
注解
若要了解如何充分利用自定义错误代码,请参阅 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) |