00001 // Unicode.h 00002 // 00003 // Copyright (C) 2000 by Jerry Lozano 00004 // 00005 // 00006 00007 #pragma once 00008 00009 00010 class CUString { 00011 public: 00012 CUString() {Init(); } // Konstruktor, nimmt Init-Methode in Anspruch 00013 CUString(const char* pAnsiString); 00014 CUString(PCWSTR pWideString); 00015 ~CUString(); // Destruktor, nimmt Free-Methode in Anspruch 00016 void Init(); // Initialisiert Struktur 00017 void Free(); // Reiniialisiert Struktur und gibt Puffer frei 00018 CUString(const CUString& orig); // Copy-Konstruktor (erforderlich) 00019 CUString operator=(const CUString& rop); // Zuweisungsoperator (erforderlich) 00020 BOOLEAN operator==(const CUString& rop) const; // überladener Vergleichsoperator 00021 CUString operator+(const CUString& rop) const; // Verkettungsoperator 00022 CUString& operator+=(const CUString& rop); // und noch die bequeme Verkettung 00023 operator PWSTR() const; // Cast-Operator nach wchar_t 00024 operator UNICODE_STRING&(); // cast nach UNICODE_STRING 00025 operator ULONG() const; // Cast-Operator nach ULONG 00026 CUString(ULONG value); // Konvertiert ULONG->CUString 00027 WCHAR& operator[](int idx); // Array-Operator für Pufferzugriff 00028 USHORT Length() {return uStr.Length/2;} // Zeichenanzahl 00029 00030 protected: 00031 UNICODE_STRING uStr; // W2K-Kernel-Format für Unicode-Strings 00032 enum ALLOC_TYPE {Empty, FromCode, FromPaged, FromNonPaged}; 00033 ALLOC_TYPE aType; // Speicherart für Puffer 00034 };