Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O mecanismo fornece uma série de métodos para ler e gravar a memória virtual e física de um destino.
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 no modo de usuário, esse é o espaço de endereço virtual do processo atual. Na depuração no modo kernel, esse é 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 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 contenha 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 na memória virtual do destino um padrão de bytes.
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 não armazenadas em 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 armazenado em cache só deve ser usado em situações quando necessário, pois o desempenho do acesso não armazenado em cache pode ser significativamente menor do que o acesso armazenado em cache.
O mecanismo fornece alguns métodos de conveniência 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 em uma região, use GetValidRegionVirtual. Ao pesquisar manualmente a memória válida em um destino, o método GetNextDifferentlyValidOffsetVirtual encontrará o próximo local em que a validade pode ser alterada.
Memória física
A memória física só pode ser acessada diretamente durante a depuração no modo kernel.
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 em 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 é chamado.