Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Esta seção fornece detalhes da estrutura interna das informações de estado coletadas pelo RPC Run-Time.
Todas as informações de estado RPC em tempo de execução estão contidas em células. Uma célula é a menor unidade de informação que pode ser visualizada e atualizada individualmente.
Cada objeto chave no Run-Time RPC manterá uma ou mais células de informações sobre seu estado. Cada célula tem um ID de célula. Quando um objeto se refere a outro objeto, ele faz isso especificando o ID da célula desse objeto. Os principais objetos sobre os quais o RPC Run-Time pode manter informações são pontos de extremidade, threads, objetos de conexão, objetos de chamada de servidor (SCALL) e objetos de chamada de cliente (CCALL).
Quando um servidor RPC está em execução, o RPC Run-Time escuta num conjunto de pontos de extremidade usando um ou mais subprocessos de trabalho. Sempre que os dados são transmitidos para o servidor, um thread pega os dados e determina qual é a solicitação de entrada. Se a solicitação for para criar uma conexão, um objeto Connection será criado e, em seguida, esse objeto atenderá todas as chamadas na conexão. Quando uma chamada RPC é feita na conexão, o objeto Connection instancia um objeto de chamada de servidor (SCALL) correspondente ao objeto de chamada de cliente (CCALL). Em seguida, esse objeto de chamada de servidor lida com essa chamada específica.
Quando um cliente RPC está em execução, o Run-Time RPC cria um objeto Client Call cada vez que uma chamada é feita. Este objeto Client Call contém informações sobre essa chamada específica.
Células de Terminal
Do ponto de vista do runtime do RPC, um ponto de extremidade é uma entrada através da qual o servidor em questão pode ser contatado. O ponto de extremidade está sempre associado a um determinado transporte RPC. As informações de estado do ponto de extremidade são usadas para associar uma chamada de cliente a um processo específico no servidor.
Os campos em uma célula de ponto de extremidade são:
ProtseqType
A sequência de protocolo para este ponto de extremidade.
Situação
O valor de status: alocado, ativo ou inativo. A maioria dos endpoints está ativa. Um ponto de extremidade tem o status de atribuído quando o processo de criação é iniciado, mas ainda não está concluído. Um ponto de extremidade fica inativo se não estiver mais em uso (por exemplo, quando um protocolo foi desinstalado).
Nome do ponto de extremidade
Os primeiros 28 caracteres do nome do ponto de extremidade.
Células de rosca
Os threads do servidor são threads de trabalho (threads Win32 padrão para utilização pelo RPC).
Os campos em uma célula de thread são:
Situação
O valor de estado: processamento, enviado, alocado ou ocioso. Um thread de processamento é aquele que está dentro do Run-Time e está processando informações. Um thread despachado já foi despachado (chamado) para a rotina do gerenciador fornecido pelo servidor (geralmente chamada apenas de rotina do servidor). Um thread alocado foi armazenado em cache. Um thread ocioso está disponível para solicitações de serviço.
LastUpdateTime
O tempo (em milissegundos após a inicialização) em que as informações foram atualizadas pela última vez.
TID
O ID da thread desta thread. Isso é útil ao tentar correlacionar com a lista de threads no depurador.
Células de objeto de conexão
Os campos em uma célula de objeto de conexão são:
Bandeiras
Os valores do sinalizador incluem exclusivo/não exclusivo, nível de autenticação e serviço de autenticação.
LastTransmitFragmentSize
O tamanho do último fragmento transmitido pela conexão.
Ponto final
O ID de célula do endpoint de onde essa conexão foi identificada.
LastSendTime
A última vez que os dados foram enviados numa ligação.
LastReceiveTime
A última vez que os dados foram recebidos numa conexão.
Células de objeto de chamada do servidor
Os campos em uma célula de objeto de chamada de servidor (SCALL) são:
Situação
O valor de status: alocado, ativo ou despachado. Uma chamada alocada está inativa e armazenada em cache. Quando uma chamada está ativa, o Run-Time RPC está processando informações relacionadas a essa chamada. Quando uma chamada é despachada, a rotina do gerente (rotina do servidor) foi chamada e ainda não retornou.
ProcNum
O número do procedimento (número da operação, em arquivos de captura do netmon) desta chamada. O Run-Time RPC identifica rotinas individuais a partir de uma interface, numerando-as por posição no arquivo IDL. A primeira rotina na interface será o número zero, a segunda número um, e assim por diante.
InterfaceUUIDStart
O primeiro DWORD da interface UUID.
ServicingTID
O ID da célula do thread que está atendendo a essa chamada. Se a chamada não estiver ativa ou enviada, ela conterá informações obsoletas.
CallFlags
Esses valores de sinalizador indicam se esta é a chamada armazenada em cache em uma conexão exclusiva, se esta é uma chamada assíncrona, se esta é uma chamada de pipe e se esta é uma chamada LRPC ou OSF.
LastUpdateTime
O tempo (em milissegundos após a inicialização) em que as informações de estado do objeto de chamada foram atualizadas pela última vez.
PID
O ID do processo do chamador. Válido apenas para chamadas LRPC.
TID
O ID de thread do chamador. Válido apenas para chamadas LRPC.
Células de objeto de chamada do cliente
Um objeto de chamada de cliente (CCALL) é dividido em duas células, porque as informações sobre uma chamada de cliente são muito grandes para caber em uma célula. A primeira célula é chamada de Informações de Chamada do Cliente e a segunda é chamada de Informações de Destino da Chamada. A maioria das ferramentas mostrará as informações juntas, para que você não precise distinguir entre elas.
As informações sobre chamadas de clientes não são mantidas, a menos que você esteja coletando informações de estado completo. Há uma exceção a essa regra: as informações sobre chamadas de cliente feitas em uma chamada de servidor são mantidas mesmo quando apenas informações de estado do servidor estão sendo coletadas. Isso permite que você rastreie chamadas abrangendo vários saltos.
Os campos na célula Informações de Chamada do Cliente são:
ProcNum
O número do procedimento (número da operação, em ficheiros de captura Netmon) do método que está a ser chamado. O Run-Time RPC identifica rotinas individuais a partir de uma interface, numerando-as por posição no arquivo IDL. A primeira rotina na interface será o número zero, a segunda número um, e assim por diante.
ServicingThread
O ID da célula do thread no qual essa chamada é feita.
IfStart
O primeiro DWORD da interface UUID pela qual a chamada é feita.
Ponto final
Os primeiros 12 caracteres do endpoint do servidor ao qual a chamada foi feita.
Os campos na célula Informações de Destino da Chamada são:
ProtocolSequence
A sequência de protocolo para esta chamada.
LastUpdateTime
O tempo (em milissegundos após a inicialização) em que as informações sobre a chamada do cliente ou o destino da chamada foram atualizadas.
TargetServer
Os primeiros 24 caracteres do nome do servidor para o qual a chamada é feita.