Как я могу определить, когда SD-карта вставлена?
Я пишу приложение для ПК на C++, которое должно определять, когда пользователь подключает SD-карту к своему компьютеру. Я знаю, как определить, когда устройство чтения карт подключено, но я не знаю, как определить, когда отдельные карты подключены / удалены.
Есть ли в Windows интерфейс ввода-вывода для обнаружения прибытия / удаления SD-карт?
[Обновить] предложенный метод WM_DEVICECHANGE работает только для обнаружения подключенного устройства чтения карт SD. Он не определяет, когда отдельные карты вставляются в устройство чтения карт.
Ответов (4)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.