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.
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 #define osWriteFile ((BOOL(WINAPI*) HANDLE,LPCVOID,DWORD,LPDWORD, \ LPOVERLAPPED))aSyscall[58].pCurrent)Et que vient faire là le WINAPI* ?
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;
Je ne dois pas être trop loin de l'idée, mais autant ne pas faire de boulette !
[EDIT] Question subsidiaire :
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 ?
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 }
Partager