Freigeben über


IsBadStringPtrA-Funktion (winbase.h)

Überprüft, ob der aufrufende Prozess Lesezugriff auf den angegebenen Speicherbereich hat.

Wichtig Diese Funktion ist veraltet und sollte nicht verwendet werden. Trotz seines Namens garantiert es nicht, dass der Zeiger gültig ist oder dass der Speicher, auf den verwiesen wird, sicher zu verwenden ist. Weitere Informationen finden Sie in den Hinweisen auf dieser Seite.
 

Syntax

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

Parameter

[in] lpsz

Ein Zeiger auf eine mit Null beendete Zeichenfolge, entweder Unicode oder ASCII.

[in] ucchMax

Die maximale Größe der Zeichenfolge in TCHARs. Die Funktion überprüft den Lesezugriff in allen Zeichen bis zum endenden NULL-Zeichen der Zeichenfolge oder bis zur Anzahl der von diesem Parameter angegebenen Zeichen, je nachdem, welcher Wert kleiner ist. Wenn dieser Parameter null ist, ist der Rückgabewert null.

Rückgabewert

Wenn der aufrufende Prozess Lesezugriff auf alle Zeichen bis zum Zeichenfolgenende NULL-Zeichen oder bis zur Anzahl der zeichen hat, die von ucchMaxangegeben wird, ist der Rückgabewert Null.

Wenn der aufrufende Prozess keinen Lesezugriff auf alle Zeichen bis zum Zeichenfolgenende NULL-Zeichen oder bis zur Anzahl der zeichen hat, die durch ucchMaxangegeben wird, ist der Rückgabewert ungleich Null.

Wenn die Anwendung als Debugversion kompiliert wird und der Prozess keinen Lesezugriff auf den gesamten angegebenen Speicherbereich hat, verursacht die Funktion eine Assertion und bricht in den Debugger auf. Wenn Sie den Debugger verlassen, wird die Funktion wie gewohnt fortgesetzt und gibt einen Wert ungleich Null zurück. Dieses Verhalten ist beabsichtigt, als Debugginghilfe.

Bemerkungen

Diese Funktion wird in der Regel verwendet, wenn Sie mit Zeigern arbeiten, die von Drittanbieterbibliotheken zurückgegeben werden, wo Sie das Speicherverwaltungsverhalten in der DLL eines Drittanbieters nicht ermitteln können.

Threads in einem Prozess werden erwartet, dass sie so zusammenarbeiten, dass man keinen Arbeitsspeicher freigibt, den die andere benötigt. Die Verwendung dieser Funktion führt nicht dazu, dass dies erforderlich ist. Wenn dies nicht geschehen ist, schlägt die Anwendung möglicherweise unvorhersehbar fehl.

Die Ableitung potenziell ungültiger Zeiger kann die Stapelerweiterung in anderen Threads deaktivieren. Ein Thread, der seinen Stapel erschöpft, wenn die Stapelerweiterung deaktiviert wurde, führt zum sofortigen Beenden des übergeordneten Prozesses ohne Popupfehlerfenster oder Diagnoseinformationen.

Wenn der aufrufende Prozess Lesezugriff auf einige, aber nicht alle, des angegebenen Speicherbereichs hat, ist der Rückgabewert ungleich Null.

In einer präemptiven Multitaskingumgebung ist es möglich, dass ein anderer Thread den Zugriff des Prozesses auf den getesteten Speicher ändert. Selbst wenn die Funktion angibt, dass der Prozess Lesezugriff auf den angegebenen Speicher hat, sollten Sie strukturierte Ausnahmebehandlung verwenden, wenn Sie versuchen, auf den Speicher zuzugreifen. Die Verwendung der strukturierten Ausnahmebehandlung ermöglicht es dem System, den Prozess zu benachrichtigen, wenn eine Zugriffsverletzungs ausnahme auftritt und dem Prozess die Möglichkeit gibt, die Ausnahme zu behandeln.

Anmerkung

Der winbase.h-Header definiert IsBadStringPtr als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit Code, der nicht codierungsneutral ist, kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows XP [nur Desktop-Apps]
mindestens unterstützte Server- Windows Server 2003 [Nur Desktop-Apps]
Zielplattform- Fenster
Header- winbase.h (enthalten Windows.h)
Library Kernel32.lib
DLL- Kernel32.dll

Siehe auch

IsBadCodePtr

IsBadReadPtr-

IsBadWritePtr