NTFS MFT を読みました。写真はこちら(4バイト語で左が下位アドレス)
強調表示された領域はファイル名属性です。以下は属性フォーマットです。
typedef struct _NTFS_ATTRIBUTE {
unsigned int dwType;
unsigned int dwFullLength;
unsigned char uchNonResFlag;
unsigned char uchNameLength;
unsigned short wNameOffset;
unsigned short wFlags;
unsigned short wID;
union ATTR {
struct RESIDENT {
unsigned int dwLength;
unsigned short wAttrOffset;
unsigned char uchIndexedTag;
unsigned char uchPadding;
} Resident;
struct NONRESIDENT {
unsigned long long n64StartVCN;
unsigned long long n64EndVCN;
unsigned short wDatarunOffset;
unsigned short wCompressionSize;
unsigned char uchPadding[4];
unsigned long long n64AllocSize;
unsigned long long n64RealSize;
unsigned long long n64StreamSize;
} NonResident;
} Attr;
} _NTFS_ATTRIBUTE, *P_NTFS_ATTRIBUTE;
ご覧のとおり、dwType は 0x00000030 (FILENAME) で、dwFullLength は 0x00000068 です。wNameOffset は 0x0018、wID は 0x0003 です。これは常駐ケースであり、常駐には dwLength 0x0000004a、wAttrOffset 0x0018、uchIndexedTag 0x01、および uchPadding 0x00 があります。オフセットは属性レコードの先頭から 0x18 なので。以下に示します。
このユニコード文字列の読み方がわかりません。utf-16ですか?すべての文字は 16 ビットですか?