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 不支持 NdisOpenFileNdisCloseFileNdisMapFileNdisUnmapFile。 在 ARM64 上,将这些函数替换为对 ZwCreateFileZwReadFile 或其他类似操作的调用。

要求

要求
最低受支持的客户端 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)

另请参阅

MiniportInitializeEx

NdisCloseFile

NdisMapFile

NdisUnmapFile

UNICODE_STRING