zwei Pointer mit einander verbinden



  • Hallo Leute, ich weiß nicht ob das Möglich ist, aber ich würde gerne zwei pointer mit einander verbinden.

    Hier ist mein Code:

    #include "windows.h"
    
    #include "Modules.h"
    
    #include "fastMD5.cpp"
    
    BOOL APIENTRY DllMain(HANDLE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved)
    
    {
    
        return TRUE;
    
    }
    
    // extern "C" __declspec(dllexport) void GetInfo(MODULEINFO *);
    
    // extern "C" __declspec(dllexport) int GetHash(HASHINFO *);
    
    // extern "C" __declspec(dllexport) int GetSalt(SALTINFO *);
    
    // extern "C" __declspec(dllexport) int GetPreparedHash(PREPAREDHASHINFO *);
    
    // extern "C" __declspec(dllexport) int GetPreparedSalt(PREPAREDSALTINFO *);
    
    extern "C" __declspec(dllexport) void GetInfo(MODULEINFO *info)
    
    {
    
        info->dwFlags = MODULE_HASH_BINARY | MODULE_HASH_SIMPLE;
    
        info->szAbout = "Type of hashes: MD5()\nMade by Nilix";
    
        info->szHashType = "MD5()";
    
    }
    
    extern "C" __declspec(dllexport) int GetHash(HASHINFO *info)
    
    {
    
        // Hash generation
    
        fast_MD5((unsigned char*)info->szPassword, info->nPasswordLen, info->pBuf);
    
        // Length of hash
    
        return 16;
    
    }
    

    Und zwar würde ich das gerne beim Methodenaufruf machen

    fast_MD5((unsigned char*)info->szPassword, info->nPasswordLen, info->pBuf);

    Bei info->pBuf (es sollen 2 gleiche Strings aneinander geknüpft werden)

    mit info.Equals(info->pBuf, info->pBuf) geht es nicht da es kein Klassen Sting variable ist.

    Und mit dem . oder + Operator ist es ein völliger schmarn

    Kann mir jemand bitte helfen



  • Dein Code ist nicht C++/CLI, sondern C. Somit falsches Forum, hoffentlich wird dein Beitrag bald verschoben.

    Zum Problem:
    Du kannst so vorgehen:
    1.) Alloziere Speicher (z.B. mit malloc), und zwar soviel, das beide Teile drin Platz haben.
    2.) Kopiere die beiden Teile mit memcpy, oder wenn es c-strings (char* mit 0 terminierung) sind mit strcpy in das allozierte memory.
    3.) Speicher mit den verbundenen Teilen benutzen
    4.) Sepicher wieder freigeben

    PS: Falls Du wirklich C++/CLI möchstest muss Du das ziemlich umschreiben.
    PPS: Falls Du ISO C++ und nicht C benutzen möchtest, kannst Du auch mit new/delete arbeiten oder noch besser mit std::vector.



  • Zunächst einmal sollte es in C bleiben. Es geht ja um Geschwindigkeit.

    gibt es denn keine einfachere Lösung hab schon länger nicht mehr programmiert.

    Früher hatte ich mit den Zeigern schon so meine Probleme.



  • Keine Ahnung was für dich einfacher ist, aber du könntest auch ein array auf dem stack anlegen. Da ist aber die Grösse konstant (muss zur Compiletime bekannt sein).

    Simon


Anmelden zum Antworten