Поделиться через


Ведение журнала подпрограмм и макросов

RDBSS предоставляет ряд процедур для ведения журнала. Эти средства ведения журнала всегда присутствуют. При определении макроса RDBSSLOG включено создание вызовов ведения журнала для проверенных сборок. Если NO_RDBSSLOG задано, вызовы ведения журнала отключены.

Процедуры ведения журнала создают записи журнала, хранящиеся в круговом буфере. Каждая запись ограничена с обеих сторон дескриптором записи. Этот дескриптор записи имеет длину в четыре байта.

В следующей таблице содержатся процедуры ведения журнала.

Подпрограмма Описание

RxLogEventDirect

Эта подпрограмма вызывается для записи ошибки в журнал ошибок ввода-вывода.

Рекомендуется использовать макрос RxLogFailure или RxLogEvent вместо вызова этой подпрограммы напрямую.

RxLogEventWithAnnotation

Эта подпрограмма выделяет запись журнала ошибок ввода-вывода, заполняет ее и записывает в журнал ошибок ввода-вывода.

RxLogEventWithBufferDirect

Эта подпрограмма выделяет запись журнала ошибок ввода-вывода, заполняет ее и записывает в журнал ошибок ввода-вывода. Эта подпрограмма кодирует номер строки и состояние в буфер необработанных данных, хранящийся в записи журнала ошибок ввода-вывода.

Рекомендуется использовать макрос RxLogFailureWithBuffer вместо вызова этой подпрограммы напрямую.

_RxLog

Эта подпрограмма принимает строку формата и переменное число параметров и форматирует выходную строку для записи в журнале ошибок ввода-вывода, если ведение журнала включено.

Рекомендуется использовать макрос RxLog вместо вызова этой подпрограммы напрямую.

Эта подпрограмма доступна только в проверенных сборках RDBSS в Windows Server 2003, Windows XP и Windows 2000.

Следующие макросы определены в файлах заголовков rxlog.h и rxprocs.h, которые вызывают подпрограммы, перечисленные в предыдущей таблице. Обычно эти макросы используются вместо непосредственного вызова этих подпрограмм.

Макрос Описание

RxLog(Args)

В проверенных сборках этот макрос вызывает подпрограмму _RxLog .

В розничных сборках этот макрос ничего не делает.

Обратите внимание, что аргументы RxLog должны быть заключены в дополнительную пару круглых скобок, чтобы включить преобразование в вызов NULL, когда ведение журнала должно быть отключено.

RxLogEvent (_DeviceObject, _OriginatorId, _EventId, _Status)

Этот макрос вызывает подпрограмму RxLogEventDirect .

RxLogFailure (_DeviceObject, _OriginatorId, _EventId, _Status)

Этот макрос вызывает подпрограмму RxLogEventDirect .

RxLogFailureWithBuffer (_DeviceObject, _OriginatorId, _EventId, _Status, _Buffer, _Length)

Этот макрос вызывает подпрограмму RxLogEventWithBufferDirect .

RxLogRetail(Args)

В проверенных сборках этот макрос вызывает подпрограмму _RxLog .

В розничных сборках этот макрос ничего не делает.

Обратите внимание, что аргументы rxLogRetail должны быть заключены в дополнительную пару круглых скобок, чтобы включить преобразование в вызов NULL при отключении ведения журнала.