Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Технология безопасной цифровой карты (SD) началась с переносимых, миниатюрных карт памяти, но с выпуском спецификации Secure Digital I/O (SDIO) безопасная цифровая ассоциация (SDA) расширила определение технологии SD для включения большого количества функций карт, таких как устройства Bluetooth, видеокамеры, беспроводные устройства локальной сети и приемники глобальной системы позиционирования (GPS). В этом документе объясняется, как операционная система поддерживает расширения функций карточек в технологии SD.
Картридеры для многих ранних устройств хранения данных SD были предназначены для подключения к USB-шине. Windows управляет этими устройствами с драйвером хранилища USB (usbstor.sys) и встроенным драйвером класса хранилища (disk.sys), как показано на следующей схеме:
Более полное описание стека устройств, созданного Windows для карты памяти, которая подключается к USB-шине, см. в примере объекта устройства для USB-устройства хранения данных.
Операционная система обеспечивает поддержку контроллеров узлов SD, которые подключаются непосредственно к шине PCI. При перечислении контроллера узла SD система загружает собственный драйвер шины SD (sdbus.sys). Если пользователь вставляет SD-карту памяти, Windows загружает собственный драйвер класса хранилища SD (sffdisk.sys) и мини-драйвер хранилища (sffp_sd.sys) поверх драйвера шины. Если пользователь вставляет SD-карту с другой функцией, например GPS или беспроводной локальной сетью, Windows загружает предоставленный поставщиком драйвер для устройства.
Все драйверы устройств в стеке SD, предоставляемые собственным или поставщиком, должны взаимодействовать с драйвером шины SD путем вызова подпрограмм в библиотеке статической шины SD (sdbus.lib). Драйверы SD должны ссылаться на эту библиотеку при компиляции. На следующей схеме показан стек драйверов SD, создаваемый системой при перечислении контроллера SD и сопровождающих карточек:
Драйверы устройств SD не могут напрямую получить доступ к набору регистров контроллера узла, а также не могут внедрять сквозные команды для контроллера узла в пакеты запросов ввода-вывода (IRPs). Драйверы sd-устройств выдают команды контроллеру узла, вызывая подпрограммы библиотеки sd bus, а затем библиотека создает соответствующие команды SD для контроллера узла.
Драйверы устройств SD должны обрабатывать стандартные PnP и энергетические IRP, но не запрашивают и не управляют аппаратными ресурсами, такими как порты, память или векторы прерываний. Следовательно, драйверы устройств SD не требуются для сопоставления аппаратных ресурсов при обработке запроса IRP_MN_START_DEVICE. Однако если драйвер устройства SD получает запрос IRP_MN_STOP_DEVICE, он должен остановить все операции ввода-вывода. Кроме того, драйвер должен закрыть интерфейс к драйверу шины SD в ответ на запрос IRP_MN_QUERY_REMOVE_DEVICE.
При возникновении аппаратного прерывания библиотека шин SD перехватывает прерывание, маскирует дальнейшие прерывания и уведомляет драйвер устройства SD с помощью процедуры обратного вызова о том, что произошло аппаратное прерывание. Описание подпрограммы обратного вызова, используемой водителем шины для уведомления драйвера устройства SD о аппаратных прерываниях, см. PSDBUS_CALLBACK_ROUTINE. Общие сведения о том, как стек драйверов SD и библиотеки управляют аппаратными прерываниями, см. в статье Обработка безопасных цифровых (SD) аппаратных прерываний.
Файл заголовка ntddsd.h, который предоставляется в комплекте драйверов Windows (WDK), объявляет прототипы подпрограмм, предоставляемых библиотекой шин SD.