Вы должны будете иметь 32-разрядный dll, загруженный в отдельный 32-разрядный процесс, и иметь Ваш процесс на 64 бита, связываются с ним через межпроцессное взаимодействие. Я не думаю, что существует любой способ, которым 32-разрядный dll может быть загружен в процесс на 64 бита иначе.
здесь существует довольно хорошая статья:
В Linux, если вас не беспокоит переносимость (C не знает о дисках, поэтому любой такой конкретный код будет непереносимым), используйте statfs ()
:
struct statfs fsb;
if(statfs("/mnt", &fsb) == 0)
printf("device has %ld blocks, each %ld bytes\n", fsb.f_blocks, fsb.f_bsize);
Прочтите и проанализируйте число в записи sysfs устройства. В вашем случае
/ sys / block / sda / size
/ sys / block / sda / sda1 / size
Устройство еще не нужно монтировать.
Если у вас нет проблем с использованием внешних инструментов, выполните следующее:
df -h | grep -i / dev / sda1
, используя popen , и проанализируйте полученную строку с помощью strtok .