Как я могу определить, когда SD-карта вставлена?

Я пишу приложение для ПК на C++, которое должно определять, когда пользователь подключает SD-карту к своему компьютеру. Я знаю, как определить, когда устройство чтения карт подключено, но я не знаю, как определить, когда отдельные карты подключены / удалены.

Есть ли в Windows интерфейс ввода-вывода для обнаружения прибытия / удаления SD-карт?

[Обновить] предложенный метод WM_DEVICECHANGE работает только для обнаружения подключенного устройства чтения карт SD. Он не определяет, когда отдельные карты вставляются в устройство чтения карт.

Ответов (4)

проверьте сообщения от WM_DEVICECHANGE вот пример

Думаю, это то, что вам нужно:

http://www.codeproject.com/KB/dotnet/devicevolumemonitor.aspx

WM_DEVICECHANGE может быть вашим ответом. Вот пример с CDROM.

Посмотрите на Windows Portable Devices API, у него есть функции, позволяющие прикрепить его к устройству чтения SD (оно известно как запоминающее устройство) и получать события, когда карта вставляется или извлекается.

У него всего два (возможно, серьезных) недостатка:

  • Требуется Windows Vista или новее
  • У него есть только COM API, поэтому, если вы хотите использовать его из программы .NET, у вас либо впереди много взаимодействия, либо вам нужно написать оболочку на C++ или C++ / CLI.