typedef struct _FILETIME { // ft
DWORD dwLowDateTime; // DWORD - 4 байта
DWORD dwHighDateTime; // DWORD - 4 байта
} FILETIME;
Вычисление размера структуры
Как мне подсчитать размер структуры в ассемблере?
Имеется ввиду структуры типа RASCONN или FILETIME.
Заранее спасибо!
Код:
итого 8 байт.
структуру RASCONN аналогично считать
Код:
typedef struct _RASCONN {
DWORD dwSize; // 4 байта
HRASCONN hrasconn; // 4 байта
TCHAR szEntryName[RAS_MaxEntryName + 1]; // 1 байт
#if (WINVER >= 0x400)
CHAR szDeviceType[ RAS_MaxDeviceType + 1 ]; // RAS_MaxDeviceType + 1
CHAR szDeviceName[ RAS_MaxDeviceName + 1 ]; //RAS_MaxDeviceType + 1
#endif
} RASCONN ;
DWORD dwSize; // 4 байта
HRASCONN hrasconn; // 4 байта
TCHAR szEntryName[RAS_MaxEntryName + 1]; // 1 байт
#if (WINVER >= 0x400)
CHAR szDeviceType[ RAS_MaxDeviceType + 1 ]; // RAS_MaxDeviceType + 1
CHAR szDeviceName[ RAS_MaxDeviceName + 1 ]; //RAS_MaxDeviceType + 1
#endif
} RASCONN ;
в системе с версией меньше чем 0x400 размер 5+RAS_MaxEntryName байт
с версией больше чем 0x400 (или равно) размер 7+RAS_MaxDeviceType+RAS_MaxDeviceName+RAS_MaxEntryName байт
Я имел ввиду универсальный метод. Типа функции в Си - sizeof.Чтобы можно было без труда какие угодно структуры считать.
Код:
struc MYSTRUC p1,p2
{
.p1 dd p1
.p2 dd p2
MYSTRUC_SIZE=$-.p1
}
{
.p1 dd p1
.p2 dd p2
MYSTRUC_SIZE=$-.p1
}
или так:
Код:
struc MYSTRUC p1,p2
{
.p1 dd p1
.p2 dd p2
}
virtual at 0
MYSTRUC MYSTRUC ?,?
MYSTRUC_SIZE=$
end virtual
{
.p1 dd p1
.p2 dd p2
}
virtual at 0
MYSTRUC MYSTRUC ?,?
MYSTRUC_SIZE=$
end virtual
Phantom-84,спасибо!а в MASM32 v9.0 есть? я просто читал инфу по библиотекам, не нашёл. может не заметил...
Конечно есть. Так и пишеш sizeof