cbSize i różne wartości dla tej samej struktUUUry

0

Mam taką strukturę

typedef struct _VK_TO_WCHARS1 {  
                                    BYTE  VirtualKey;      
                                    BYTE  Attributes;     
                                    WCHAR wch[1];         
                                } VK_TO_WCHARS1, * PVK_TO_WCHARS1;

typedef struct _VK_TO_WCHAR_TABLE {
    PVK_TO_WCHARS1 pVkToWchars;
    BYTE           nModifications;
    BYTE           cbSize;
} VK_TO_WCHAR_TABLE, * PVK_TO_WCHAR_TABLE;

zmienną typu 'PVK_TO_WCHAR_TABLE'

PVK_TO_WCHAR_TABLE aa;

i teraz aa.cbSize pokazuje mi różne wartości - od 4 do 14. Co tak naprawdę pokazuje cbSize? Próbuję przełożyć to na Delphi i nie widzę żadnej zależności

0

Kawałek kodu znalezionego w necie:

PVK_TO_WCHAR_TABLE pVkToWchTbl = KbdTables->pVkToWcharTable;
while (pVkToWchTbl->pVkToWchars)
{
	PVK_TO_WCHARS1 pVkToWch = pVkToWchTbl->pVkToWchars;
	while (pVkToWch->VirtualKey)
	{
		for (int i = 0; i < pVkToWchTbl->nModifications; ++i)
		{
			sChar.Format(L"%wc (%.4x)", pVkToWch->wch[i], pVkToWch->wch[i]);
			this->AddVKChar(pVkToWch->VirtualKey, sChar);
		}

		pVkToWch = (PVK_TO_WCHARS1)(((PBYTE)pVkToWch) + pVkToWchTbl->cbSize);
	}
	++pVkToWchTbl;
}
0

@Rev właśnie w tej linijce pVkToWch = (PVK_TO_WCHARS1)(((PBYTE)pVkToWch) + pVkToWchTbl->cbSize); to pVkToWchTbl->cbSize zwraca różne wartości, od 4 do 14 i nie potrafię załapać OCB :-/

0

Dobra, jestem idiotą, za długo nad tym siedzę - cbSize to pole w strukturze, które tak BTW mam też w rekordzie w Delphi. Trzeba to po prostu odczytać a nie wyliczać

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