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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.