ВУЗ:
Составители:
// Извлекаем из считанного заголовок файловой записи
FileRecordHeader fHeader;
memcpy(&fHeader, buf_FileRec, sizeof(fHeader));
// Извлекаем из считанного заголовок атрибута
StandartAttribHeader stattrHeader;
WORD attrOffset;
attrOffset = fHeader.AttribBegOffset;
memcpy(&stattrHeader, buf_FileRec + attrOffset, sizeof(StandartAttribHeader));
// Пока не прочли все атрибуты
while(stattrHeader.ID != fHeader.AttribMaxID - 1)
{
// Извлекаем из считанного заголовок очередного атрибута
attrOffset = attrOffset + stattrHeader.Length;
memcpy(&stattrHeader, buf_FileRec + attrOffset, sizeof(StandartAttribHeader));
// Если последний атрибут, выходим из цикла
if(stattrHeader.Type == 0xffffffff) break;
switch(stattrHeader.Type)
{
case 0x30: // Если тип атрибута имя
{
FileNameAttrCont fNameAttr;
// Извлекаем из считаного содержание атрибута имя
memcpy(&fNameAttr , buf_FileRec + attrOffset + 24 +
stattrHeader.ContentOffset, sizeof(FileNameAttrCont ));
// Если длина имени больше нуля, выводим имя
на экран
if(fNameAttr. LengthName > 0)
{
char MultiByteStr[30]; int dj = 0;
for(int di = 0; di < fNameAttr.LengthName * 2; di = di+2)
{
MultiByteStr[dj] = fNameAttr.FileName[di]; dj++;
}
MultiByteStr[dj] = '\0';
printf("%s\n",MultiByteStr);
}
break;
}
}
}
// Определяем смещение следующей файловой записи
OffsetFileRec = OffsetFileRec + 1024;
// Позиционируемся на файловую запись
dwPtrLow = SetFilePointer (h, 512*(BeginMFTSector+32) + OffsetFileRec, NULL,
FILE_BEGIN);
}
// Закрываем дескриптор
CloseHandle(h);
}
printf("The End");
return 0;
Страницы
- « первая
- ‹ предыдущая
- …
- 19
- 20
- 21
- 22
- 23
- …
- следующая ›
- последняя »