Informationen zu „Strsafe.h“
Eine schlechte Pufferbehandlung ist in vielen Sicherheitsproblemen mit Pufferüberläufen verbunden. Die in Strsafe.h definierten Funktionen bieten zusätzliche Verarbeitung für die ordnungsgemäße Pufferverarbeitung in Ihrem Code. Aus diesem Grund sollen sie ihre integrierten C/C++-Entsprechungen sowie bestimmte Windows-Implementierungen ersetzen. Strsafe.h ist ab Windows XP mit Service Pack 2 (SP2) im Windows SDK verfügbar.
Zu den Vorteilen der Strsafe-Funktionen gehören:
Die Größe des Zielpuffers wird immer für die Funktion bereitgestellt, um sicherzustellen, dass die Funktion nicht über das Ende des Puffers schreibt.
Puffer werden garantiert null-beendet, auch wenn der Vorgang das beabsichtigte Ergebnis abschneidet.
Alle Funktionen geben einen HRESULT-Wert mit nur einem möglichen Erfolgscode (S_OK) zurück.
Jede Funktion ist in einer entsprechenden Zeichenanzahl ("cch") oder byte count ("cb") version verfügbar.
Die meisten Funktionen verfügen über eine erweiterte Version ("Ex") für erweiterte Funktionen.
Weitere Informationen hierzu finden Sie in den nachfolgenden Abschnitten.
Zeichenanzahlfunktionen
In den folgenden Funktionen wird anstelle einer Byteanzahl eine Zeichenanzahl verwendet.
Funktion | Ersetzungen |
---|---|
, | |
Byteanzahl-Funktionen
In den folgenden Funktionen wird anstelle einer Zeichenanzahl eine Byteanzahl verwendet.
Funktion | Ersetzungen |
---|---|
Verwenden von Strsafe.h
Um die Strsafe-Funktionen inline zu verwenden, fügen Sie die Headerdatei wie hier gezeigt ein, und folgen Sie den #include Anweisungen für alle anderen Headerdateien.
#include <strsafe.h>
Um die Funktionen im Bibliotheksformular zu verwenden, schließen Sie die folgende Anweisung ein, bevor Sie Strsafe.h einschließen. Es wird jedoch empfohlen, die Inlinefunktionen zu verwenden.
#define STRSAFE_LIB
Hinweis
: Die folgenden Funktionen müssen als Inlinefunktionen verwendet werden: StringCbGets, StringCbGetsEx, StringCchGets und StringCchGetsEx.
Wenn Sie Strsafe.h in Ihre Datei einschließen, sind die älteren Funktionen, die durch die Strsafe.h-Funktionen ersetzt werden, veraltet. Versuche, diese älteren Funktionen zu verwenden, führen zu einem Compilerfehler, der Sie angibt, die neueren Funktionen zu verwenden. Wenn Sie dieses Verhalten außer Kraft setzen möchten, schließen Sie die folgende Anweisung ein, bevor Sie Strsafe.h einschließen.
#define STRSAFE_NO_DEPRECATE
Um nur Zeichenanzahlfunktionen zuzulassen, schließen Sie die folgende Anweisung ein, bevor Strsafe.h eingeschlossen wird.
#define STRSAFE_NO_CB_FUNCTIONS
Um nur Byteanzahlfunktionen zuzulassen, schließen Sie die folgende Anweisung ein, bevor Strsafe.h eingeschlossen wird.
#define STRSAFE_NO_CCH_FUNCTIONS
Hinweis
Sie können STRSAFE_NO_CB_FUNCTIONS oder STRSAFE_NO_CCH_FUNCTIONS definieren, aber nicht beide.
Einige Strsafe-Funktionen verfügen über Gebietsschema-fähige Versionen. Standardmäßig deklariert der Header diese Funktionen nicht. Um diese Deklarationen zu aktivieren, schließen Sie die folgende Makroanweisung ein, bevor Sie Strsafe.h einschließen.
#define STRSAFE_LOCALE_FUNCTIONS
Die maximal unterstützte Zeichenfolgenlänge beträgt 2.147.483.647 (STRSAFE_MAX_CCH) Zeichen, entweder ANSI- oder Unicode-Zeichen.
Zugehörige Themen