[c++] RegEnumValueW i dziwna wartosc lpData

0
	wchar_t   ValueName[MAX_VALUE_NAME];
	DWORD   ValueLength;
	wchar_t WData[MAX_PATH];
	char    Data[MAX_PATH];
	DWORD   DataLength;

			  retCode = RegEnumValueW(subKey,
									 index,
									 ValueName,
									 &ValueLength,
									 0,
									 0,
									 Data,
									 &DataLength
									 );

			MultiByteToWideChar(CP_ACP,
									  0,
								   Data,
								   DataLength,
								   WData,
								   DataLength
								   );

Dane wartosci sa odczytywane 'proprawnie' ,ale bufor zawiera dane w postaci jakby unicode/multibyte
np. C\0:\0,po prostu kazdy znak jest zakonczony zerem o_O..Jak widac w powyzszym kodzie probowalem konwertowac wartosc z Data do wchar_t ,ale konwertowanie to nie przynioslo zadnego rezultatu.

0

tak, to jest UNICODE. a to oznacza ze te dane sa w 'formacie' dwubajtowego widechar czyli wchar_t i to co Ty bys chcial z nimi zrobic to co najwyzej WiceCharToMultiByte..

ah.. i zwroc uwage ze ten ciag bajtow nie ma terminatora na koncu, przed/po konwersji warto by bylo dopisac go na koniec

0

a po co odczytujesz przez RegEnumValueW, skoro nie potrzebny ci UNICODE, RegEnumValueA będzie zwracać ANSI

1 użytkowników online, w tym zalogowanych: 0, gości: 1