Macros definidas por RDBSS

Várias macros úteis são definidas nos arquivos de cabeçalho do WDK (Kit de Driver de Janela) que chamam essas rotinas rdbss ou outras rotinas de kernel. Algumas dessas macros normalmente são usadas em vez de chamar as rotinas rdbss diretamente. Algumas dessas macros são usadas como rotinas de conveniência.

As macros a seguir são definidas pelo RDBSS.

Macro Descrição

RxAcquirePrefixTableLockExclusive (TABLE, WAIT)

Essa macro adquire o bloqueio de tabela de prefixo no modo exclusivo para operações de alteração.

RxAcquirePrefixTableLockShared (TABLE, WAIT)

Essa macro adquire o bloqueio de tabela de prefixo no modo compartilhado para operações de pesquisa.

RxAllocatePoolWithTag (tipo, tamanho, marca)

Em builds verificados, essa macro aloca memória de um pool com uma marca de quatro bytes no início do bloco que pode ser usado para ajudar a capturar instâncias de lixo de memória.

Em builds de varejo, essa macro se torna uma chamada direta para ExAllocatePoolWithTag.

RxCheckMemoryBlock (ptr)

Em builds verificados, essa macro verifica um bloco de memória para obter uma assinatura de cabeçalho de RX_POOL_HEADER especial.

Em builds de varejo, essa macro não faz nada.

RxDereferenceAndFinalizeNetFcb (Fcb ,RxContext, RecursiveFinalize, ForceFinalize)

Essa macro é usada para acompanhar operações de desreferência em estruturas FCB.

Observe que essa macro manipula a contagem de referência e também retorna o status da chamada de desreferência final.

RxDereferenceNetFcb (Fcb)

Essa macro é usada para acompanhar operações de desreferência em estruturas FCB.

Observe que essa macro manipula a contagem de referência e também retorna o status da chamada de desreferência final.

RxDereferenceNetFobx (Fobx,LockHoldingState)

Essa macro é usada para acompanhar operações de desreferência em estruturas FOBX.

RxDereferenceNetRoot (NetRoot, LockHoldingState)

Essa macro é usada para acompanhar operações de desreferência em estruturas de NET_ROOT.

RxDereferenceSrvCall (SrvCall, LockHoldingState)

Essa macro é usada para acompanhar operações de desreferência em estruturas de SRV_CALL.

RxDereferenceSrvOpen ( SrvOpen, LockHoldingState)

Essa macro é usada para acompanhar operações de desreferência em estruturas de SRV_OPEN.

RxDereferenceVNetRoot ( VNetRoot, LockHoldingState)

Essa macro é usada para acompanhar operações de desreferência em estruturas de V_NET_ROOT.

RxFcbAcquiredShared (RXCONTEXT, FCB)

Essa macro verifica se o thread atual tem acesso ao recurso regular no modo compartilhado. Essa macro chama a rotina ExIsResourceAcquiredSharedLite .

RxFillAndInstallFastIoDispatch(__devobj, __fastiodisp)

Essa macro chama __RxFillAndInstallFastIoDispatch para preencher um vetor de expedição de E/S rápido para ser idêntico ao vetor de E/S de expedição normal e o instala no objeto de driver associado ao objeto de dispositivo passado.

RxFreePool (ptr)

Em builds verificados, essa macro libera um pool de memória.

Em builds de varejo, essa macro se torna uma chamada direta para ExFreePool.

RxIsFcbAcquiredShared (FCB)

Essa macro verifica se o thread atual tem acesso ao recurso regular no modo compartilhado. Essa macro chama a rotina ExIsResourceAcquiredSharedLite .

RxIsFcbAcquiredExclusive (FCB)

Essa macro verifica se o thread atual tem acesso ao recurso regular no modo exclusivo. Essa macro chama a rotina ExIsResourceAcquiredExclusiveLite .

RxIsFcbAcquired (FCB)

Essa macro verifica se o thread atual tem acesso ao recurso regular no modo compartilhado ou exclusivo. Essa macro chama as rotinas ExIsResourceAcquiredSharedLite e ExIsResourceAcquiredExclusiveLite .

RxIsPrefixTableLockAcquired (TABLE)

Essa macro indica se o bloqueio de tabela de prefixo foi adquirido no modo exclusivo ou compartilhado.

RxIsPrefixTableLockExclusive (TABLE)

Essa macro indica se o bloqueio de tabela de prefixo foi adquirido no modo exclusivo.

RxLog(Args)

Em builds verificados, essa macro chama a rotina de _RxLog .

Em builds de varejo, essa macro não faz nada.

Observe que os argumentos para RxLog devem ser colocados entre parênteses adicionais para habilitar a conversão em uma chamada nula quando o registro em log deve ser desativado.

RxLogEvent (_DeviceObject, _OriginatorId, _EventId_Status)

Essa macro chama a rotina RxLogEventDirect .

RxLogFailure (_DeviceObject, _OriginatorId, _EventId, _Status)

Essa macro chama a rotina RxLogEventDirect .

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

Essa macro chama a rotina RxLogEventWithBufferDirect .

RxLogRetail(Args)

Em builds verificados, essa macro chama a rotina de _RxLog .

Em builds de varejo, essa macro não faz nada.

Observe que os argumentos para RxLogRetail devem ser colocados entre parênteses adicionais para habilitar a conversão em uma chamada nula quando o registro em log deve ser desativado.

RxReferenceNetFcb (Fcb)

Essa macro é usada para acompanhar operações de referência em estruturas FCB.

RxReferenceNetFobx (Fobx)

Essa macro é usada para acompanhar operações de referência em estruturas FOBX. Um log dessas operações de referência pode ser acessado pelo sistema de registro em log e pelo WMI.

RxReferenceNetRoot (NetRoot)

Essa macro é usada para acompanhar operações de referência em estruturas de NET_ROOT. Um log dessas operações de referência pode ser acessado pelo sistema de registro em log e pela WMI (Instrumentação de Gerenciamento do Windows).

RxReferenceSrvCall (SrvCall)

Essa macro é usada para acompanhar operações de referência em estruturas de SRV_CALL que não estão no nível de DPC (Chamada de Procedimento Adiado).

RxReferenceSrvCallAtDpc (SrvCall)

Essa macro é usada para acompanhar operações de referência em estruturas de SRV_CALL no nível DPC.

RxReferenceSrvOpen (SrvOpen)

Essa macro é usada para acompanhar operações de referência em estruturas de SRV_OPEN.

RxReferenceVNetRoot (VNetRoot)

Essa macro é usada para acompanhar operações de referência em estruturas de V_NET_ROOT.

RxReleasePrefixTableLock (TABLE)

Essa macro libera o bloqueio de tabela de prefixo.

RxSynchronizeBlockingOperations(RXCONTEXT,FCB,IOQUEUE)

Essa macro sincroniza o bloqueio de solicitações de E/S para a mesma fila de trabalho. No Windows Server 2003, essa macro chama a rotina de __RxSynchronizeBlockingOperations com o parâmetro DropFcbLock definido como FALSE.

No Windows XP e no Windows 2000, essa macro chama a rotina __RxSynchronizeBlockingOperationsMaybeDroppingFcbLock com o parâmetro DropFcbLock definido como FALSE.

RxSynchronizeBlockingOperations(RXCONTEXT,FCB,IOQUEUE)

Essa macro sincroniza o bloqueio de solicitações de E/S para a mesma fila de trabalho. No Windows Server 2003, essa macro chama a rotina de __RxSynchronizeBlockingOperations com o parâmetro DropFcbLock definido como TRUE.

No Windows XP e no Windows 2000, essa macro chama a rotina de __RxSynchronizeBlockingOperationsMaybeDroppingFcbLock com o parâmetro DropFcbLock definido como TRUE.