Функция AtaPortGetUnCachedExtension (irb.h)
Подпрограмма AtaPortGetUncachedExtension выделяет некичованный общий буфер, который используется ЦП и устройством.
Синтаксис
PVOID AtaPortGetUnCachedExtension(
[in] PVOID ChannelExtension,
[in] ULONG UncachedExtensionSize,
[in] ULONG IrbExtensionSize
);
Параметры
[in] ChannelExtension
Указатель на расширение канала.
[in] UncachedExtensionSize
Задает длину в байтах некшированного общего буфера. Задайте для этого параметра значение 0, если драйвер минипорта не требует некичированного расширения.
[in] IrbExtensionSize
Указывает размер в байтах, который требуется мини-драйвером для своего хранилища запросов( если таковой имеется).
Задайте для этого параметра значение 0, если драйвер мини-порта не поддерживает данные IRB, для которых требуется хранилище.
Возвращаемое значение
AtaPortGetUncachedExtension возвращает указатель виртуального адреса на некичованное расширение. Если он не может выделить запрошенную память или если память была выделена ранее, она возвращает NULL.
Замечания
Минипорт-драйвер может использовать расширения IRB в качестве хранилища для данных, определенных драйвером, таких как данные, необходимые для обработки конкретного запроса.
Драйвер порта не инициализирует расширения IRB, но задает указатель на расширение в каждом IRB, который он отправляет мини-драйверу.
Оборудование HBA может безопасно получить доступ к расширению IRB.
Драйвер минипорта не должен вызывать ataPortGetUncachedExtension из любой подпрограммы, отличной от IdeHwControl подпрограммы, и только при обработке действия управления StartChannel. Вызовы AtaPortGetUncachedExtension из других подпрограмм драйвера минипорта приводят к неправильной работе или даже сбою системы. Драйвер порта автоматически освобождает некаченое расширение после вызова IdeHwControl с действием управления StopChannel.
Требования
Требование | Ценность |
---|---|
целевая платформа | Настольный |
заголовка | irb.h (include Ata.h, Irb.h) |
библиотеки | Ataport.lib; Pciidex.lib |