libblkid 라이브러리: 코어 메모리의 블록과 함께 사용할 수 있는 방법이 있나요?

libblkid 라이브러리: 코어 메모리의 블록과 함께 사용할 수 있는 방법이 있나요?

libblkid나는 이 라이브러리를 사용하여 기존 블록 장치를 분석하는 방법을 알고 있습니다 . 메모리 범위를 분석하는 데 사용하고 싶습니다.앞으로블록 장치에 씁니다. 이 같은:

char block[4096];
... writing into the block 
blkid_probe pr = blkid_new_probe_from_address(block);
... calling usual libblkid function on the pr

물론 그렇지 않습니다. 라이브러리의 핵심에 들어가지 않고 blkid_new_probe_from_address기존 함수를 사용하여 그러한 함수를 생성할 수 있는 방법이 있습니까 ?libblkid

아니면 다른 툴킷이 이를 달성할 수 있을까요?

답변1

나는 내 자신의 질문에 대답하고 있습니다. 내가 원하는 작업을 수행하기 위해 libblkid이 기능 mkstemp내에서 여러 기능을 사용할 수 있었습니다 . 이 함수는 임시 파일(실제로는 메모리에 있음)을 생성하고 엽니다. 파일에 블록을 쓴 다음 blkid_probe_set_device파일의 파일 설명자를 사용하여 함수를 호출해야 합니다. 도서관에서는 이 인공 파일을 기꺼이 사용하는 것 같습니다. 코드는 다음과 같습니다(단순화를 위해 모든 오류 검사를 생략했습니다).

    char block[4096];
    ...
    char filename[] = "/tmp/fileXXXXXX";
    const int fd = mkstemp(filename);
    write(fd, block, sizeof(block));
    ...
    blkid_probe pr = blkid_new_probe();
    blkid_probe_set_device(pr, fd, 0, 0);
    ...
    ... (analysis using various libblkid functions)
    ...
    close(fd);
    unlink(filename);

관련 정보