Макросы, определенные RDBSS
В файлах заголовков пакета драйверов windows (WDK) определен ряд полезных макросов, которые вызывают эти подпрограммы RDBSS или другие подпрограммы ядра. Некоторые из этих макросов обычно используются вместо непосредственного вызова подпрограмм RDBSS. Некоторые из этих макросов используются в качестве удобных подпрограмм.
Следующие макросы определяются RDBSS.
Макрос | Описание |
---|---|
RxAcquirePrefixTableLockExclusive (TABLE, WAIT) |
Этот макрос получает блокировку таблицы префиксов в монопольном режиме для операций изменения. |
RxAcquirePrefixTableLockShared (TABLE, WAIT) |
Этот макрос получает блокировку таблицы префикса в общем режиме для операций поиска. |
RxAllocatePoolWithTag (тип, размер, тег) |
В проверенных сборках этот макрос выделяет память из пула с четырехбайтовый тег в начале блока, который можно использовать для перехвата экземпляров корзины памяти. В розничных сборках этот макрос становится прямым вызовом ExAllocatePoolWithTag. |
RxCheckMemoryBlock (ptr) |
В проверенных сборках этот макрос проверяет блок памяти на наличие специальной RX_POOL_HEADER сигнатуры заголовка. В розничных сборках этот макрос ничего не делает. |
RxDereferenceAndFinalizeNetFcb (Fcb , RxContext, RecursiveFinalize, ForceFinalize) |
Этот макрос используется для отслеживания операций разыменования в структурах FCB. Обратите внимание, что этот макрос управляет количеством ссылок, а также возвращает состояние окончательного вызова разыменования. |
RxDereferenceNetFcb (Fcb) |
Этот макрос используется для отслеживания операций разыменования в структурах FCB. Обратите внимание, что этот макрос управляет количеством ссылок, а также возвращает состояние окончательного вызова разыменования. |
RxDereferenceNetFobx (Fobx,LockHoldingState) |
Этот макрос используется для отслеживания операций разыменования в структурах FOBX. |
RxDereferenceNetRoot (NetRoot, LockHoldingState) |
Этот макрос используется для отслеживания операций разыменования в NET_ROOT структурах. |
RxDereferenceSrvCall (SrvCall, LockHoldingState) |
Этот макрос используется для отслеживания операций разыменования в SRV_CALL структурах. |
RxDereferenceSrvOpen ( SrvOpen, LockHoldingState) |
Этот макрос используется для отслеживания операций разыменования в SRV_OPEN структурах. |
RxDereferenceVNetRoot ( VNetRoot, LockHoldingState) |
Этот макрос используется для отслеживания операций разыменования в V_NET_ROOT структурах. |
RxFcbAcquiredShared (RXCONTEXT, FCB) |
Этот макрос проверяет, имеет ли текущий поток доступ к обычному ресурсу в общем режиме. Этот макрос вызывает подпрограмму ExIsResourceAcquiredSharedLite . |
RxFillAndInstallFastIoDispatch(__devobj, __fastiodisp) |
Этот макрос вызывает __RxFillAndInstallFastIoDispatch , чтобы заполнить быстрый вектор диспетчеризации ввода-вывода, идентичный обычному вектору диспетчеризации ввода-вывода, и устанавливает его в объект драйвера, связанный с переданным объектом устройства. |
RxFreePool (ptr) |
В проверенных сборках этот макрос освобождает пул памяти. В розничных сборках этот макрос становится прямым вызовом ExFreePool. |
RxIsFcbAcquiredShared (FCB) |
Этот макрос проверяет, имеет ли текущий поток доступ к обычному ресурсу в общем режиме. Этот макрос вызывает подпрограмму ExIsResourceAcquiredSharedLite . |
RxIsFcbAcquiredExclusive (FCB) |
Этот макрос проверяет, имеет ли текущий поток доступ к обычному ресурсу в монопольном режиме. Этот макрос вызывает подпрограмму ExIsResourceAcquiredExclusiveLite . |
RxIsFcbAcquired (FCB) |
Этот макрос проверяет, имеет ли текущий поток доступ к обычному ресурсу в общем или монопольном режиме. Этот макрос вызывает подпрограммы ExIsResourceAcquiredSharedLite и ExIsResourceAcquiredExclusiveLite . |
RxIsPrefixTableLockAcquired (TABLE) |
Этот макрос указывает, была ли блокировка таблицы префиксов получена в монопольном или общем режиме. |
RxIsPrefixTableLockExclusive (TABLE) |
Этот макрос указывает, была ли блокировка префиксной таблицы получена в монопольном режиме. |
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 при отключении ведения журнала. |
RxReferenceNetFcb (Fcb) |
Этот макрос используется для отслеживания ссылочных операций в структурах FCB. |
RxReferenceNetFobx (Fobx) |
Этот макрос используется для отслеживания ссылочных операций в структурах FOBX. К журналу этих ссылочных операций может обращаться система ведения журнала и WMI. |
RxReferenceNetRoot (NetRoot) |
Этот макрос используется для отслеживания ссылочных операций в NET_ROOT структурах. К журналу этих ссылочных операций может обращаться система ведения журнала и инструментарий управления Windows (WMI). |
RxReferenceSrvCall (SrvCall) |
Этот макрос используется для отслеживания ссылочных операций в SRV_CALL структурах, которые не находятся на уровне отложенного вызова процедур (DPC). |
RxReferenceSrvCallAtDpc (SrvCall) |
Этот макрос используется для отслеживания ссылочных операций в SRV_CALL структурах на уровне DPC. |
RxReferenceSrvOpen (SrvOpen) |
Этот макрос используется для отслеживания ссылочных операций в SRV_OPEN структурах. |
RxReferenceVNetRoot (VNetRoot) |
Этот макрос используется для отслеживания ссылочных операций в V_NET_ROOT структурах. |
RxReleasePrefixTableLock (TABLE) |
Этот макрос освобождает префиксную блокировку таблицы. |
RxSynchronizeBlockingOperations(RXCONTEXT,FCB,IOQUEUE) |
Этот макрос синхронизирует блокирующие запросы ввода-вывода в той же рабочей очереди. В Windows Server 2003 этот макрос вызывает подпрограмму __RxSynchronizeBlockingOperations с параметром DropFcbLock , равным FALSE. В Windows XP и Windows 2000 этот макрос вызывает подпрограмму __RxSynchronizeBlockingOperationsMaybeDroppingFcbLock с параметром DropFcbLock , равным FALSE. |
RxSynchronizeBlockingOperations(RXCONTEXT,FCB,IOQUEUE) |
Этот макрос синхронизирует блокирующие запросы ввода-вывода в той же рабочей очереди. В Windows Server 2003 этот макрос вызывает подпрограмму __RxSynchronizeBlockingOperations с параметром DropFcbLock , равным TRUE. В Windows XP и Windows 2000 этот макрос вызывает подпрограмму __RxSynchronizeBlockingOperationsMaybeDroppingFcbLock с параметром DropFcbLock , равным TRUE. |