Как я нахожу размер смонтированной карты флэш-памяти с интерфейсом USB в C?

Вы должны будете иметь 32-разрядный dll, загруженный в отдельный 32-разрядный процесс, и иметь Ваш процесс на 64 бита, связываются с ним через межпроцессное взаимодействие. Я не думаю, что существует любой способ, которым 32-разрядный dll может быть загружен в процесс на 64 бита иначе.

здесь существует довольно хорошая статья:

Получающий доступ 32-разрядный DLLs от 64-разрядного кода

6
задан P Shved 28 September 2009 в 14:34
поделиться

3 ответа

В 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);
8
ответ дан 9 December 2019 в 22:36
поделиться

Прочтите и проанализируйте число в записи sysfs устройства. В вашем случае

  1. Полное устройство (все разделы и таблица разделов): / sys / block / sda / size
  2. Логический раздел на этом устройстве: / sys / block / sda / sda1 / size

Устройство еще не нужно монтировать.

3
ответ дан 9 December 2019 в 22:36
поделиться

Если у вас нет проблем с использованием внешних инструментов, выполните следующее:

df -h | grep -i / dev / sda1

, используя popen , и проанализируйте полученную строку с помощью strtok .

0
ответ дан 9 December 2019 в 22:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: