Compartir a través de


Función StorPortLogSystemEvent (storport.h)

La rutina StorPortLogSystemEvent proporciona acceso completo a los controladores de miniportar a las funcionalidades de la instalación de eventos del kernel de Windows, lo que permite a los controladores de miniportar crear entradas del registro de eventos que son realmente útiles para solucionar problemas de almacenamiento. Proporciona una alternativa mejor a la función de registro de eventos del controlador de miniport existente, StorPortLogError.

Sintaxis

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

Parámetros

[in] HwDeviceExtension

Puntero a la extensión de dispositivo de hardware. Se trata de un área de almacenamiento por HBA que el controlador de puerto asigna e inicializa en nombre del controlador de minipuerto. Los controladores de minipuerto suelen almacenar información específica de HBA en esta extensión, como el estado del HBA y los intervalos de acceso asignados para el HBA. Esta área está disponible para el miniporte inmediatamente después de que el controlador de minipuerto llame a StorPortInitialize. El controlador de puerto libera esta memoria cuando quita el dispositivo.

[in, out] LogDetails

Estructura STOR_LOG_EVENT_DETAILS que contiene información que aparece en la entrada del registro de eventos del sistema.

[in, out] MaximumSize

Variable para recibir el tamaño máximo combinado de las cadenas y los datos de volcado de miniporte. Solo se devuelve si se produce un error en la función y devuelve un valor de STOR_STATUS_INVALID_BUFFER_SIZE. Este parámetro es opcional.

Valor devuelto

Código devuelto Descripción
STOR_STATUS_NOT_IMPLEMENTED
Esta función no se implementa en el sistema operativo activo.
STOR_STATUS_INVALID_PARAMETER
Se pasó un parámetro no válido.
STOR_STATUS_INVALID_IRQL
La llamada se realizó en irQL > DISPATCH_LEVEL.
STOR_STATUS_INSUFFICIENT_RESOURCES
No había recursos del sistema suficientes para completar la solicitud.
STOR_STATUS_UNSUPPORTED_VERSION:
Se especificó una versión no admitida (por ejemplo, más actual) de la estructura de STOR_LOG_EVENT_DETAILS. Cuando se devuelve esto, LogDetails->InterfaceRevision se establece en la versión compatible más reciente.
STOR_STATUS_INVALID_BUFFER_SIZE
Los búferes pasados a la función eran demasiado grandes. Cuando se devuelve este valor, MaximumSize se establece en el tamaño combinado máximo de las cadenas y los datos de volcado de memoria de la miniporta.
STOR_STATUS_SUCCESS
La operación de registro se completó correctamente.

Comentarios

Para comprender cómo puede usar códigos de error personalizados para aprovechar mejor las ventajas, consulte Extensiones de registro de errores de Storport. Se debe llamar a la rutina StorPortLogSystemEvent en IRQL <= DISPATCH_LEVEL. Si pasa una versión más reciente de STOR_LOG_EVENT_DETAILS que la admitida por esta compilación, esta función cambia el campo InterfaceRevision a la versión compatible más reciente y devuelve STOR_STATUS_UNSUPPORTED_VERSION. El campo InterfaceRevision de STOR_LOG_EVENT_DETAILS es un valor de 32 bits. Sin embargo, solo se usan los tres bytes más significativos para la validación. El byte bajo está reservado para distinguir entre las variaciones secundarias compatibles de una versión determinada. Por ejemplo, una estructura de 0x00000101 de revisión es compatible con storport que implementa la revisión 0x00000100 de la interfaz, aunque es posible que se pierda alguna funcionalidad secundaria y no crítica. Si especifica un tamaño combinado de datos y cadenas de volcado de memoria que supera el tamaño máximo permitido de entrada del registro de eventos, el entero al que apunta MaximumSize se establece en el tamaño máximo permitido de los datos y cadenas de volcado de miniporto, y se devuelve STOR_INVALID_BUFFER_SIZE. Aunque esta función acepta valores de ULONG para los especificadores de dirección de ruta de acceso, destino y LUN, los valores se truncan en valores UCHAR porque Storport solo admite internamente valores de 8 bits para estos especificadores.

Requisitos

Requisito Value
Plataforma de destino Universal
Encabezado storport.h (incluya Storport.h)
Reglas de cumplimiento de DDI StorPortIrql(storport)

Consulte también

StorPortLogError