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 及更高版本的驱动程序,此字符串包含 Unicode 字符。 也就是说,对于 Windows 2000 及更高版本,NDIS 将NDIS_STRING类型定义为 UNICODE_STRING 类型。
[in] HighestAcceptableAddress
可以存储文件数据的最高物理地址;如果驱动程序没有限制,则指定 -1。
返回值
无
备注
NdisOpenFile 会打开一个磁盘文件,通常是驱动程序稍后将下载用于对智能 NIC 进行编程的文件。 NdisOpenFile 还会分配存储,用于保存驱动程序对 NdisMapFile 函数的后续调用的文件内容。
微型端口驱动程序应仅从 MiniportInitializeEx 函数调用 NdisOpenFile。
当 NdisOpenFile 返回时,微型端口驱动程序可以通过调用 NdisMapFile 来访问文件数据。 它可以调用 NdisUnmapFile 函数来分页输出文件,以便在驱动程序不访问文件数据时,它不会不必要地消耗资源。 使用完该文件后, MiniportInitializeEx 必须调用
NdisCloseFile 函数。
注意
ARM64 不支持 NdisOpenFile、NdisCloseFile、NdisMapFile 和 NdisUnmapFile。 在 ARM64 上,将这些函数替换为对 ZwCreateFile、 ZwReadFile 或其他类似操作的调用。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | NDIS 6.0 和 NDIS 5.1 驱动程序支持 (请参阅 Windows Vista 中的 NdisOpenFile (NDIS 5.1) ) 。 NDIS 5.1 驱动程序支持 (请参阅 Windows XP 中的 NdisOpenFile (NDIS 5.1) ) 。 |
目标平台 | 通用 |
标头 | ndis.h (包括 Ndis.h) |
Library | Ndis.lib |
IRQL | PASSIVE_LEVEL |
DDI 符合性规则 | Irql_Miscellaneous_Function (ndis) |