Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O mecanismo fornece uma série de métodos para ler e gravar a memória virtual e física de um alvo.
Memória Virtual
Ao especificar um local na memória virtual de um destino, o espaço de endereço virtual do destino é usado. Na depuração de modo de usuário, este é o espaço de endereço virtual do processo atual. Na depuração em modo kernel, este é o espaço de endereço virtual do processo implícito. Consulte Threads e Processos para obter mais informações sobre o processo atual e o processo implícito.
A memória virtual (do destino) pode ser lida usando ReadVirtual e escrita usando WriteVirtual.
Os ponteiros na memória do destino podem ser lidos e gravados usando os métodos de conveniência ReadPointersVirtual e WritePointersVirtual. Esses métodos converterão automaticamente entre os ponteiros de 64 bits usados pelo mecanismo e os ponteiros nativos usados pelo destino. Esses métodos são úteis ao solicitar memória que contém ponteiros que serão usados para solicitações subsequentes -- por exemplo, um ponteiro para uma cadeia de caracteres.
Os métodos SearchVirtual e SearchVirtual2 podem ser usados para pesquisar um padrão de bytes na memória virtual do destino.
O método FillVirtual pode ser usado para copiar um padrão de bytes, várias vezes, para a memória virtual do destino.
A memória virtual do destino também pode ser lida e gravada de forma a ignorar o cache de memória virtual do mecanismo de depurador usando os métodos ReadVirtualUncached e WriteVirtualUncached. Essas versões sem cache são úteis para ler memória virtual inerentemente volátil, como áreas de dispositivo mapeadas pela memória, sem contaminar ou invalidar o cache. O acesso à memória não armazenada em cache só deve ser usado em situações em que é necessário, pois o desempenho do acesso não armazenado em cache pode ser significativamente menor do que o acesso em cache.
O mecanismo fornece alguns métodos convenientes para ler cadeias de caracteres da memória virtual do destino. Para ler uma cadeia de caracteres multibyte do destino, use ReadMultiByteStringVirtual e ReadMultiByteStringVirtualWide. Para ler uma cadeia de caracteres Unicode do destino, use ReadUnicodeStringVirtual e ReadUnicodeStringVirtualWide.
Para encontrar informações sobre um local de memória, use GetOffsetInformation. Nem todo o espaço de endereço virtual no destino contém memória válida. Para localizar memória válida dentro de uma região, use GetValidRegionVirtual. Ao procurar manualmente a memória válida em um destino, o método GetNextDifferentlyValidOffsetVirtual encontrará o próximo local onde a validade pode ser alterada.
Memória física
A memória física apenas pode ser acedida diretamente na depuração em modo núcleo.
A memória física no destino pode ser lida usando ReadPhysical e ReadPhysical2 e escrita usando WritePhysical e WritePhysical2.
O método FillPhysical pode ser usado para copiar um padrão de bytes, várias vezes, para a memória física do destino.
Um endereço no espaço de endereço virtual do destino pode ser convertido para um endereço físico no destino usando o método VirtualToPhysical . As estruturas de paginação do sistema usadas para traduzir um endereço virtual para um endereço físico podem ser encontradas usando GetVirtualTranslationPhysicalOffsets.
Eventos
Quando a memória virtual ou física do destino é alterada, o método de retorno de chamada IDebugEventCallbacks::ChangeDebuggeeState é invocado.