vérification copymemory filemapping
Bonjour,
Je crée un filemapping et avant de copier des données dedans je souhaite savoir si celui ci n'est pas déjà plein pour ne pas faire de bêtise alors voilà mon filemapping :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| hSharedData = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0/*high-order DWORD*/, BUF_SIZE, szName);
if (hSharedData == NULL){
return 1;
}
::pBuf = (LPTSTR) MapViewOfFile(hSharedData, FILE_MAP_ALL_ACCESS, 0, 0, BUF_SIZE);
if (::pBuf == NULL){
CloseHandle(hSharedData);
return 1;
} |
et ma vérification :
Code:
1 2
| if (_tcslen(::pBuf) < BUF_SIZE && _tcslen(wszBuff) < BUF_SIZE - _tcslen(::pBuf))
CopyMemory((PVOID)(::pBuf + _tcslen(::pBuf)), Buff, (_tcslen(Buff) * sizeof(TCHAR))); |
Le problème c'est que dans ce buffer il pourrat y avoir des caractère chinois par exemple et _tcslen (wcslen dans mon cas) retourne : Returns the length of the C wide string wcs. (le nombre de caractère donc) mais il me faut le nombre d'octet, j'ai essayer strlen sur le buffer (::pBuf) mais il foire totalement je pense que quelque chose m’échappe (strlen((const char*)::pBuff).
Merci d'avance.