C에서 디스크 이미지의 볼륨 레이블을 얻으려고 시도하는 데 이상한 시간이 있습니다. FAT12 디스크의 경우이 정보가 오프셋 0x2b 또는 43에 있다는 것을 알고 있습니다. 10 진수이며 11 바이트 길이입니다. 어쨌든 여기 지금 내 코드입니다 : 내가 사용하는 입력 파일의 경우C에서 Fat12 디스크의 볼륨 레이블 얻기
void main(int argc, char *argv[]) {
...
FILE *fp = fopen(argv[1], "rb");
printf("Volume Label: %s\n", seekData(fp, 43, 11));
...
}
unsigned char* seekData(FILE *fp, int offset, int bytes) {
unsigned char* buff = malloc(sizeof(unsigned char)*bytes);
fseek(fp, offset, SEEK_SET);
fread(buff, 1, bytes, fp);
rewind(fp);
return buff;
}
이 (.IMA는) 내가 다시 20 20 20 20 20 20 20 20 20 20 20
진수에서 점점 계속. 위 코드를 실행하면 Volume Label:(nothing here)
이됩니다. 나는 여기에 명백한 무엇인가 분명한 것을 놓치고 있냐? 어떤 도움을 주시면 감사하겠습니다.
이 장치는 하드 드라이브와 같은 파티션 장치입니까? 이 경우 부트 섹터는 MBR 뒤에옵니다. FAT12 파티션이 시작되는 위치를 파악하려면 MBR을 읽어야 할 수도 있습니다. 또한 디스크에 레이블이 있는지 확인하십시오. – Schwern
품질에 대해 전혀 알지 못하지만 도움이 될 수 있습니다. http://www.dailyfreecode.com/code/file-allocation-table-2866.aspx – Schwern
C 코드로 시작하는 대신 16 진 편집기로 시작하십시오. 볼륨 레이블이 실제로 어디에 있는지 파악한 다음 거기에서부터 이동하십시오. –