Вы можете использовать Java + JNA (https://github.com/twall/jna/),, но тогда вам придется выяснить, как собрать эту информацию, используя собственные библиотеки на каждой из платформ, которые вы хотели бы поддерживать.
Преимущество заключается в том, что вам не нужно будет компилировать код C / C ++ для каждой из платформ. Если вы решите воспользоваться этой опцией, кто-то другой сможет рассказать вам, как определить идентификаторы жесткого диска на разных платформах, используя код / библиотеки C / C ++.
AFAIK, в Linux вам нужно что-то прочитать из / proc или / sys, в Windows я бы посмотрел MSDN и увидел, что вы можете найти, что можно использовать в Visual Studio (C ++) и для Mac, кто-то другой должен был бы заполнить in. Solaris / BSD, вероятно, тоже должен поддерживаться, если вы делаете это правильно. На самом деле, для большинства POSIX-совместимых операционных систем, я думаю, вы сможете сделать это несколько равномерно.