Compartilhar via


Função IsBadStringPtrA (winbase.h)

Verifica se o processo de chamada tem acesso de leitura ao intervalo de memória especificado.

Importante Essa função é obsoleta e não deve ser usada. Apesar de seu nome, ele não garante que o ponteiro seja válido ou que a memória apontada seja segura de usar. Para obter mais informações, consulte Comentários nesta página.
 

Sintaxe

BOOL IsBadStringPtrA(
  [in] LPCSTR   lpsz,
  [in] UINT_PTR ucchMax
);

Parâmetros

[in] lpsz

Um ponteiro para uma cadeia de caracteres terminada em nulo, Unicode ou ASCII.

[in] ucchMax

O tamanho máximo da cadeia de caracteres, em TCHARs. A função verifica o acesso de leitura em todos os caracteres até o caractere nulo de terminação da cadeia de caracteres ou até o número de caracteres especificado por esse parâmetro, o que for menor. Se esse parâmetro for zero, o valor retornado será zero.

Valor de retorno

Se o processo de chamada tiver acesso de leitura a todos os caracteres até o caractere nulo de terminação da cadeia de caracteres ou até o número de caracteres especificado por ucchMax, o valor retornado será zero.

Se o processo de chamada não tiver acesso de leitura a todos os caracteres até o caractere nulo de terminação da cadeia de caracteres ou até o número de caracteres especificado por ucchMax, o valor retornado não será zero.

Se o aplicativo for compilado como uma versão de depuração e o processo não tiver acesso de leitura a todo o intervalo de memória especificado, a função causará uma asserção e entrará no depurador. Deixando o depurador, a função continua como de costume e retorna um valor diferente de zero Esse comportamento é por design, como um auxílio de depuração.

Observações

Essa função normalmente é usada ao trabalhar com ponteiros retornados de bibliotecas de terceiros, em que você não pode determinar o comportamento de gerenciamento de memória na DLL de terceiros.

Espera-se que os threads em um processo cooperem de tal forma que um não libere a memória que o outro precisa. O uso dessa função não nega a necessidade de fazer isso. Se isso não for feito, o aplicativo poderá falhar de maneira imprevisível.

Desreferenciar ponteiros potencialmente inválidos pode desabilitar a expansão da pilha em outros threads. Um thread esgotando sua pilha, quando a expansão da pilha foi desabilitada, resulta no encerramento imediato do processo pai, sem nenhuma janela de erro pop-up ou informações de diagnóstico.

Se o processo de chamada tiver acesso de leitura a alguns, mas não a todos, do intervalo de memória especificado, o valor retornado não será zero.

Em um ambiente de multitarefa preemptiva, é possível que algum outro thread altere o acesso do processo à memória que está sendo testada. Mesmo quando a função indica que o processo tem acesso de leitura à memória especificada, você deve usar tratamento de exceção estruturado ao tentar acessar a memória. O uso do tratamento estruturado de exceções permite que o sistema notifique o processo se ocorrer uma exceção de violação de acesso, dando ao processo a oportunidade de lidar com a exceção.

Nota

O cabeçalho winbase.h define IsBadStringPtr como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante de pré-processador UNICODE. A combinação do uso do alias neutro de codificação com código que não é neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Conventions for Function Prototypes.

Requisitos

Requisito Valor
de cliente com suporte mínimo Windows XP [somente aplicativos da área de trabalho]
servidor com suporte mínimo Windows Server 2003 [somente aplicativos da área de trabalho]
da Plataforma de Destino Windows
cabeçalho winbase.h (inclua Windows.h)
biblioteca Kernel32.lib
de DLL Kernel32.dll

Consulte também

IsBadCodePtr

IsBadReadPtr

IsBadWritePtr