Функция NdisOpenFile (ndis.h)
Функция NdisOpenFile возвращает дескриптор для открытого файла.
Синтаксис
void NdisOpenFile(
[out] PNDIS_STATUS Status,
[out] PNDIS_HANDLE FileHandle,
[out] PUINT FileLength,
[in] PNDIS_STRING FileName,
[in] NDIS_PHYSICAL_ADDRESS HighestAcceptableAddress
);
Параметры
[out] Status
Указатель на указанную вызывающим переменную, в которой эта функция возвращает состояние операции открытого файла, которая может быть одной из следующих:
NDIS_STATUS_SUCCESS
Дескриптор FileHandle действителен для последующего вызова NdisMapFile.
NDIS_STATUS_FILE_NOT_FOUND
Указанная строка в FileName не указала имя, найденное в пространстве имен системного объекта.
NDIS_STATUS_RESOURCES
NDIS не удалось выделить ресурсы, необходимые для открытия файла, и выделить буфер для содержимого файла.
NDIS_STATUS_ERROR_READING_FILE
Данные указанного файла не удалось считывать в системную память для последующего доступа вызывающей стороны.
[out] FileHandle
Указатель на указанную вызывающим переменную, в которой эта функция возвращает дескриптор открытого файла, если вызов выполнен успешно.
[out] FileLength
Указатель на указанную вызывающим переменную, в которой эта функция записывает количество байтов данных в открытом файле, если вызов выполнен успешно.
[in] FileName
Указатель на тип NDIS_STRING, содержащий инициализированную подсчитываемую строку в наборе символов по умолчанию по умолчанию, именуя открываемый файл. Для драйверов Windows 2000 и более поздних версий эта строка содержит символы Юникода. То есть для Windows 2000 и более поздних версий NDIS определяет тип NDIS_STRING как тип UNICODE_STRING.
[in] HighestAcceptableAddress
Самый высокий физический адрес, в котором можно хранить данные файла, или указывает -1, если драйвер не устанавливает ограничений.
Возвращаемое значение
Никакой
Замечания
NdisOpenFile открывает файл диска, как правило, файл, который драйвер будет скачан позже для программирования интеллектуальной сетевой карты. NdisOpenFile также выделяет хранилище для хранения содержимого файла для последующего вызова NdisMapFile.
Минипорт-драйвер должен вызывать NdisOpenFile только из функции MiniportInitializeEx.
Когда NdisOpenFile возвращается, драйвер минипорта может получить доступ к данным файла, вызвав NdisMapFile. Он может вызывать функцию NdisUnmapFile, чтобы вывести файл на страницу, чтобы он не потреблял ресурсы без необходимости, пока драйвер не обращается к данным файла. По завершении работы с файлом MiniportInitializeEx должен вызвать
функция NdisCloseFile.
Заметка
NdisOpenFile, NdisCloseFile, NdisMapFile и NdisUnmapFile не поддерживаются в ARM64. В ARM64 замените эти функции вызовами ZwCreateFile, ZwReadFileили других аналогичных операций.