1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
| PartageMem est une classe
PRIVÉE
handle_FicMap est un entier
pt_FicMap est un entier
i_Taille est un entier
FIN
//-o0o------------------------------------------o0o-
//-o0o- Constructeur de classe -o0o-
//-o0o------------------------------------------o0o-
PROCEDURE Constructeur()
//-o0o------------------------------------------o0o-
//-o0o------------------------------------------o0o-
//-o0o- Destrcuteur de classe -o0o-
//-o0o------------------------------------------o0o-
PROCEDURE Destructeur()
:Close()
//-o0o------------------------------------------o0o-
//-o0o------------------------------------------o0o-
//-o0o- Création zone mémoire partagée -o0o-
//-o0o------------------------------------------o0o-
PROCEDURE Creation(E_cNomZone, E_iLong = 65000)
Handle_Fic est un entier
i_Securite est un entier
i_Permission est un entier
i_TailleMax est un entier
i_TailleMin est un entier
c_Nom est une chaîne ASCIIZ sur 128 = E_cNomZone
:i_Taille = E_iLong
Handle_Fic = 0xffffffff
i_Securite = Null
i_Permission = 4
i_TailleMax = 0
i_TailleMin = :i_Taille
:handle_FicMap = API("KERNEL32", "CreateFileMappingA", handle_Fic, i_Securite, i_Permission, i_TailleMax, i_TailleMin, &c_Nom)
SI :handle_FicMap ALORS
i_Permission = 2
i_TailleMax = 0
i_TailleMin = 0
:pt_FicMap = API("KERNEL32", "MapViewOfFile", :handle_FicMap, i_Permission, i_TailleMax, i_TailleMin, i_TailleMin)
SI PAS :pt_FicMap ALORS
API("KERNEL32", "CloseHandle", :handle_FicMap)
RENVOYER Faux
FIN
SINON
RENVOYER Faux
FIN
RENVOYER Vrai
//-o0o------------------------------------------o0o-
//-o0o------------------------------------------o0o-
//-o0o- Fermeture de la zone mémoire partagée -o0o-
//-o0o------------------------------------------o0o-
PROCEDURE Close()
SI :handle_FicMap ALORS API("KERNEL32","UnmapViewOfFile", :pt_FicMap)
SI :pt_FicMap ALORS API("KERNEL32","CloseHandle", :handle_FicMap)
//-o0o------------------------------------------o0o-
//-o0o------------------------------------------o0o-
//-o0o- Ouverture de la zone mémoire partagée -o0o-
//-o0o------------------------------------------o0o-
PROCEDURE Ouvre(E_cNomZone, E_iLong = 65000)
Handle_Fic est un entier
i_Securite est un entier
i_Permission est un entier
i_TailleMax est un entier
i_TailleMin est un entier
c_Nom est une chaîne ASCIIZ sur 128 = E_cNomZone
:i_Taille = E_iLong
i_Permission = 2
:handle_FicMap = API("KERNEL32", "OpenFileMappingA", i_Permission, Faux, c_Nom)
SI :handle_FicMap ALORS
i_Permission = 2
i_TailleMax = 0
i_TailleMin = 0
:pt_FicMap = API("KERNEL32", "MapViewOfFile", :handle_FicMap, i_Permission, i_TailleMax, i_TailleMin, i_TailleMin)
SI PAS :pt_FicMap ALORS
API("KERNEL32", "CloseHandle", :handle_FicMap)
RENVOYER Faux
FIN
SINON
RENVOYER Faux
FIN
RENVOYER Vrai
//-o0o------------------------------------------o0o-
//-o0o------------------------------------------o0o-
//-o0o- Obtenir le pointeur sur la zone mémoire-o0o-
//-o0o------------------------------------------o0o-
PROCEDURE GetPointeur()
RENVOYER :pt_FicMap
//-o0o------------------------------------------o0o-
//-o0o------------------------------------------o0o-
//-o0o- Modifier le contenu de la zone mémoire -o0o-
//-o0o------------------------------------------o0o-
PROCEDURE Set_Contenu(E_cContenu)
c_Contenu est une chaîne ASCIIZ sur 65000
c_Contenu = E_cContenu
Transfert(:GetPointeur(), &c_Contenu, :i_Taille)
//-o0o------------------------------------------o0o-
//-o0o------------------------------------------o0o-
//-o0o- Récuparétion du contenu de la zone mem -o0o-
//-o0o------------------------------------------o0o-
PROCEDURE Get_Contenu()
c_Contenu est une chaîne ASCIIZ sur 65000
Transfert(&c_Contenu, :GetPointeur(), :i_Taille)
RENVOYER c_Contenu
//-o0o------------------------------------------o0o- |
Partager