Partilhar via


!db, !dc, !dd, !dp, !dq, !du, !dw

As extensões !db, !dc, !dd, !dp, !dq, !du e !dw exibem dados no endereço físico especificado no computador de destino.

Não confunda esses comandos de extensão com o comando d* (Memória de vídeo) ou com o comando de extensão !ntsdexts.dp.

!db [Caching] [-m] [PhysicalAddress] [L Size] 
!dc [Caching] [-m] [PhysicalAddress] [L Size] 
!dd [Caching] [-m] [PhysicalAddress] [L Size] 
!dp [Caching] [-m] [PhysicalAddress] [L Size] 
!dq [Caching] [-m] [PhysicalAddress] [L Size] 
!du [Caching] [-m] [PhysicalAddress] [L Size] 
!dw [Caching] [-m] [PhysicalAddress] [L Size] 

Parâmetros

Cache
Pode ser um dos valores a seguir. O valor Caching deve estar entre colchetes:

[c]
Leva a uma leitura dessa extensão a partir da memória armazenada em cache.

[uc]
Leva a uma leitura dessa extensão a partir da memória não armazenada em cache.

[wc]
Leva a uma leitura dessa extensão a partir da memória com combinação de gravação.

-m
Leva a uma leitura da memória em uma unidade por vez. Por exemplo, !db -m lê a memória em blocos de 8 bits, enquanto !dw -m lê memória em blocos de 16 bits. Se o hardware não aceitar leituras de memória física de 32 bits, talvez seja necessário utilizar a opção -m. Essa opção não afeta o comprimento ou a aparência da tela. Ela só afeta a forma de acesso da memória.

Endereço Físico
Especifica o primeiro endereço físico a ser exibido, em formato hexadecimal. Se isso for omitido quando esse comando for usado pela primeira vez, o endereço usará zero como padrão. Se isso for omitido em um uso posterior, a exibição começará onde a última exibição terminou.

L **** Tamanho
Especifica o número de blocos de memória a serem exibidos. A extensão precisa utilizada determina o tamanho de um bloco.

Ambiente

Modo

Modo kernel

DLL

Kext.dll

Informações Adicionais

Para gravar na memória física, use as extensões !e\*. Para ter uma visão geral da manipulação de memória e uma descrição de outros comandos relativos à memória, confira Memória de leitura e de gravação.

Comentários

Todas essas extensões exibem memória física, mas há diferença nos formatos de exibição e comprimento padrão:

  • A extensão !db exibe bytes hexadecimais e os equivalentes de caracteres ASCII. O comprimento padrão é de 128 bytes.

  • A extensão !dc exibe valores DWORD e os equivalentes de caracteres ASCII. O comprimento padrão é 32 DWORDs (total de 128 bytes).

  • A extensão !dd exibe valores DWORD. O comprimento padrão é 32 DWORDs (total de 128 bytes).

  • A extensão !dp exibe valores ULONG_PTR. De acordo com o tamanho da instrução, as palavras têm 32 bits ou 64 bits. O comprimento total padrão é de 128 bytes.

  • A extensão !dq exibe valores ULONG64_PTR. Estas são palavras de 32 bits. O comprimento total padrão é de 128 bytes.

  • A extensão !du exibe caracteres UNICODE. O comprimento padrão é de 16 caracteres (total de 32 bytes) ou até localizar um caractere NULL.

  • A extensão !dw exibe valores WORD. O comprimento padrão é 64 DWORDs (total de 128 bytes).

Assim, o uso de duas dessas extensões diferentes com o mesmo valor de Size provavelmente resultará em uma distinção na quantidade total de memória exibida. Por exemplo, usar o comando !db L 32 resulta na exibição de 32 bytes (como bytes hexadecimais), enquanto o comando !dd L 32 resulta na exibição de 128 bytes (como valores DWORD).

Veja aqui um exemplo em que é necessário o sinalizador de atributo de cache:

kd> !dc e9000
physical memory read at e9000 failed
If you know the caching attributes used for the memory,
try specifying [c], [uc] or [wc], as in !dd [c] <params>.
WARNING: Incorrect use of these flags will cause unpredictable
processor corruption. This may immediately (or at any time in
the future until reboot) result in a system hang, incorrect data
being displayed or other strange crashes and corruption.

kd> !dc [c] e9000
#   e9000 000ea002 000ea002 000ea002 000ea002 ................
#   e9010 000ea002 000ea002 000ea002 000ea002 ................