Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Добавление 64-разрядной поддержки адресации в драйвер может значительно повысить общую производительность системы. Это особенно важно для драйверов устройств, которые выполняют прямой доступ к памяти (DMA). В 64-разрядной версии Microsoft Windows драйверы устройств, выполняющие DMA, но не поддерживающие 64-разрядную адресацию, дважды буферизовываются, что приводит к снижению производительности.
Хотя двойное буферизация обычно имеет относительно небольшое влияние (один процентные точки) на системы размером 8 ГБ, это достаточно, чтобы повлиять на задачи с интенсивным вводом-выводом, например активностью базы данных. По мере увеличения объема физической памяти это негативное влияние на производительность также увеличивается.
Чтобы поддерживать 64-разрядную DMA, драйверы должны соблюдать следующие рекомендации:
Используйте структуры PHYSICAL_ADDRESS для вычислений физических адресов.
Обрабатывать весь 64-разрядный адрес как допустимый физический адрес. Например, драйверы не должны вызывать MmGetPhysicalAddress в заблокированном буфере, отменять высокие 32 биты и передавать усеченный адрес в 32-разрядный адаптер компонентов. Это приводит к повреждению памяти, потере ввода-вывода и сбою системы.
Используйте высокопроизводительные функции scatter/gather (GetScatterGatherList и PutScatterGatherList), добавленные в Windows 2000.
Проверьте значение глобальной системной переменной Mm64BitPhysicalAddress . Если это значение TRUE, система поддерживает 64-разрядную физическую адресацию.
Задайте для члена Dma64BitAddresses структуры DEVICE_DESCRIPTIONзначение TRUE , чтобы указать, что драйвер поддерживает 64-разрядные адреса DMA.
Подпрограммы DMA в 32-разрядной версии Windows готовы к 64-разрядной версии. Если драйвер устройства правильно использует эти подпрограммы, код DMA должен работать без изменений в 64-разрядной версии Windows.