Einzelnen Beitrag anzeigen

dust258

Registriert seit: 18. Aug 2008
62 Beiträge
 
#3

AW: Parameterübergabe an externe DLL (Pointer, Array, u.s.w.)

  Alt 4. Okt 2010, 14:30
Ich habe jetzt auch den in C geschriebenen Beispielcode zum laufen bekommen. Seht Ihr eine Möglichkeit (unsigned char*)malloc in Delphi nachzustellen?

Struktur aus der Header-Datei:
Code:
typedef struct
{
   int   version;      
   char* documentFileName;      
   unsigned char* dataToBeSigned;  
   int dataToBeSignedLen;
}
Pointer sign()
Code:
SIGN = (SIGN_TYPE) GetProcAddress(hMod, "SecSigner_Sign");


int signDocs(DOCUMENT documents[], int documentCount,
          BYTEARRAY cipherCerts[], int cipherCertCount,
          BYTEARRAY softKeyData[], int softKeyDataCount)
{
   int ret = (*SIGN)(documents, documentCount, cipherCerts, cipherCertCount, softKeyData, softKeyDataCount);
   

   return ret;
}
Und der Aufruf:
Code:
contentBuffer = (unsigned char*)malloc(CONTENT_BUF_LEN);

            filePos = 0;
            while (true)
            {
               int bytesRead = _read(fd, &contentBuffer[filePos], CONTENT_BUF_LEN-filePos);
         
               if (bytesRead < 0)
               {
                  return -1;
               }

               if (bytesRead == 0)
               {
                  break;
               }
   
               filePos+=bytesRead;
            }

            documents[i].version = 7;
            documents[i].documentFileName = "test.pdf";
            documents[i].dataToBeSigned = contentBuffer;
            documents[i].dataToBeSignedLen = filePos;
EDIT: Die DLL wurde übrigens in C++ geschrieben.

Geändert von dust258 ( 4. Okt 2010 um 14:32 Uhr)
  Mit Zitat antworten Zitat