Bonjour,
Je suppose que le code suivant définit osWriteFile comme une fonction du type indiqué, et d'adresse stockée dans le pointeur pCurrent du 59° élément du tableau aSysCall.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #define osWriteFile ((BOOL(WINAPI*) HANDLE,LPCVOID,DWORD,LPDWORD, \ LPOVERLAPPED))aSyscall[58].pCurrent)
J'ai également une petite difficulté avec le prototype de la fonction, notamment le dernier paramètre (optionnel ?) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
osWriteFile = function(hFile: Handle; Buf: PByteArray; Size: Cardinal; var Written: Cardinal; var AsynchronousOps: OverLapped = nil ): LongBool; cdecl;
Et que vient faire là le WINAPI* ?

Je ne dois pas être trop loin de l'idée, mais autant ne pas faire de boulette !

[EDIT] Question subsidiaire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
struct winFile {
  const sqlite3_io_methods *pMethod; // Pointer = 4
  sqlite3_vfs *pVfs;     // Pointer = 4
  HANDLE h;            // Pointer = 4 
  u8 locktype;        // Unsigned8Bits ? = 1  
  short sharedLockByte;  // Byte = 1  
  u8 ctrlFlags;       // Unsigned8Bits ? = 1    
  DWORD lastErrno;   // Cardinal = 4   
  winShm *pShm;       // Pointer = 4   
  const char *zPath;   // Pointer = 4
  int szChunk;   // int = 4
}
Cette structure occupe 36 octets : peut-il y avoir en C un alignement pair sur les mots pour les champs octets, expliquant que 3 octets en occupent 8 ?