NdisAcquireReadWriteLock 获得一个调用者用来在多个驱动程序线程的共享资源间进行写或读访问的锁。运行在IRQL NdisReleaseReadWriteLock 释放一个在调用NdisAcquireReadWriteLock过程中获得的读-写锁
NdisMSynchronizeWithInterrupt 任何与MiniportISR或MiniportDisableInterrupt函数共享资源的NIC驱动程序函数必须与这两个函数同步访问资源,以防止争用发生。必须与MiniportISR和MiniportDisableInterrupt同步的函数通过调用NdisMSynchronizeWithInterrupt,与一个也运行在DLRQL的MiniportSynchronizeISR函数同步访问共享资源
状态函数
NdisMCoIndicateStatus 向绑定协议指示一个面向连接NIC的状态变化或一个在网络接口卡(NIC)上的指定虚连接(VC)的状态变化
NdisMIndicateStatus 向NDIS库指示NIC状态已变化,仅被无连接微端口调用
NdisMIndicateStatusComplete 向NDIS库指示状态变化已完成,仅被无连接微端口调用
NdisMQueryInformationComplete 指示早期的MiniportQueryInformation调用已完成
NdisMSetInformationComplete 指示早期的MiniportSetInformation调用已完成
无连接微端口的发送和接收函数
NdisMIndicateReceivePacket 向相关上层指示一个或多个包
NdisMArcIndicateReceiveNdisMEthIndicateReceiveNdisMFddiIndicateReceiveNdisMTrIndicateReceive 指示一个指定介质类型的包正在接收
NdisMArcIndicateReceiveCompleteNdisMEthIndicateReceiveCompleteNdisMFddiIndicateReceiveCompleteNdisMTrIndicateReceiveComplete 指示一个包接收操作已完成
NdisMsendComplete 指示早期包发送操作已完成,当早期MiniportSend函数异步操作时使用它
NdisMSendResourcesAvailable 指示NDIS库,微端口驱动程序有可用于发送操作的资源。如果微端口完成了一个同步发送,在它的MiniportSend函数中调用这个函数,或者当它检测出一个异步发送操作已完成时,在它的MiniportHandleInterrupt函数中调用。如果驱动程序没有为一个未完的发送操作调用NdisMSendComplete时,NdisMsendResourcesAvailable才可被调用
NdisMTransferDataComplete 指示NDIS库早期的MiniportTransferDate请求已完成,当先前调用的MiniportTransferData函数返回NDIS_STATUS_PENDING时使用这个函数
面向连接微端口的发送和接收函数
NdisMCoIndicateReceivePacket 向上层相关层指示一个或多个包,根据每一个VC指示包
NdisMCoSendComplete 指示早期通过调用MiniportCoSendPackets所发起的包发送操作已完成
带外(OOB)数据宏
NDIS_OOB_DATA_FROM_PACKET 返回一个指向与一个给定包描述符相连的OOB数据块的指针
NDIS_GET_PACKET_MEDIA_SPECIFIC_INFO 从与一个给定包描述符相连的OOB数据块中返回MediaSpecificInformation指针和SizeMediaSpecificInfo值
NDIS_GET_PACKET_STATUS 从一个与给定包描述符相连的OOB数据块中返回状态值
NDIS_GET_PACKET_TIME_TO_SEND 从一个与给定包描述符相连的OOB数据块中返回TimeToSend值
NDIS_SET_PACKET_HEADER_SIZE 为随后的接收指示设置一个与给定包描述符相连的OOB数据块中的HeaderSize值
NDIS_SET_PACKET_MEDIA_SPECIFIC_LNFO 设置与一个给定包描述符相连的OOB数据块中的MediaSpecificInformation指针和SizeMediaSpecificInfo值
NDIS_SET_PACKET_STATUS 在一个驱动程序调用NdisM(Co)IndicateReceivePacket或在一个驱动程序的Miniport(Co)SendPackets函数返回控制之前,设置与一个给定包描述符相连的OOB数据块中的状态值。
NDIS_SET_PACKET_TIME_RECEIVED 设置与一给定包描述符相连的OOB数据块中的TimeReceived值
NDIS_SET_PACKET_TIME_SENT 设置与一给定包描述符相连的OOB数据块中的TimeSent值
包和缓存处理函数
NdisAllocatePacketPool 分配和初始化一个不分页包池块。调用者提供请求可存放包描述符数和以字节为单位的每个固定包的大小
NdisAllocatePacketPoolEx 分配和初始化一个不分页包池的块。并且提供请求包描述符的数量和以字节为单位的每个固定包的大小,调用者提供用来保存溢出状态下的包描述符的数量
NdisAllocatePacket 从由NdisAllocatePacketPool返回的包池中分配一固定大小的包描述符
NdisDprAllocatePacket 当调用者运行在IRQL DISPATCH_LEVEL下,分配和初始化一个包描述符
NdisAllocateBufferPool 返回一个调用者可用NdisAllocateBuffer来分配缓存描述符的句柄
NdisAllocateBuffer 在指定的已分配的不分页的内存块中创建一个映射虚存范围的缓存描述符。需给出由NdisAllocateBufferPool返回的句柄
NdisAdjustBufferLength 修改一个给定缓存描述符指定范围的长度
NdisBufferLength 返回一个给定映射缓存以字节为单位的长度
NdisBufferVirtualAddress 如果给定缓存描述符所给出的物理页并没有映射到系统空间的话,返回由一个给定缓存描述符映射的缓存的基本虚地址,并且将这物理页映射到系统空间,
NdisCopyBuffer 为指定的内存块创建缓存描述符
NdisCopyFromPacketToPacket 从一个包向另一个包拷贝指定数量的字节,给定一个指定的源包和一个目的包及每个包的起始位置
NdisCreateLookaheadBufferFromSharedMemory 返回一个与总线管理器DMA NIC共享内存块的缓存的虚地址。允许驱动程序以只读预分缓存方式将向上指示的接收数据的一部分映射到相关协议
NdisDestroyLookaheadBufferFromSharedMemory 释放由调用NdisCreateLookaheadBufferFromSharedMemory而获得的缓存
NdisQueryPacket 返回一组描述了包和链的大指针的信息
NdisQueryBuffer 返回由一个给定缓存描述符映射的一个缓存的虚地址的基址和长度
NdisQueryBufferOffset 返回在一个给定缓存描述符中映射的一个缓存的虚地址的基址和长度
NdisGetFirstBufferFromPacket 返回链在包上的第一个缓存的描述符及虚地址,以及第一个缓存的长度和所有缓存的总长(以防缓存使分段的)
NdisGetNextBuffer 返回给定缓存描述符链当前的缓存描述符
NdisGetBufferPhysicalArraySize 对一给定缓存描述符,返回不邻接的物理块的缓存数量。总线管理DMA NIC在调用NdisMStarBufferPhysicalMapping之前调用它来决定分配和填充多少NDIS_PHYSICAL_ADDRESS结构
NdisGetPacketFlags 如果有的话,返回在一个给定包中,由协议驱动程序设置的标志
NdisFreePacketPool 释放由调用NdisAllocatePacketPool所分配的一个不分页池的块
NdisPacketPoolUsage 返回一个包池中当前已分配的包描述符的数量
NdisFreePacket 释放调用NdisAllocatePacket所分配的包
NdisDprFreePacket 当调用者为访问包池提供内部同步,并且调用者运行在IRQL DISPATCH_LEVEL时,释放驱动程序分配的包描述符并且将它返回给空闲列表
NdisFreeBufferPool 释放调用NdisAllocateBufferPool所获得的句柄
NdisFreeBuffer 释放调用NdisAllocateBuffer所获得的缓存描述符
NdisChainBufferAtBack 将一给定缓存描述符链到一个给定包的缓存描述符链表的未尾
NdisUnchainBufferAtFront 从一给定包的缓存描述符链表中删除链表的表头并且返回指向这个缓存描述符的指针
NdisUnchainBufferAtBack 从一给定包的缓存描述符链表中删除表尾,并且返回指向这缓存描述符的指针
NdisReinitializePacket 从一给定包中删除所有相链的缓存并且重新初始化它以备重新使用
NdisRecalculatePacketCounts 重新设置多个给定包的有效个数以使下一个调用NdisQueryPacket重新计算个数
NDIS_BUFFER_LINKAGE 由一指向缓存描述符的指针,返回一个被链接的缓存的指针。这个宏允许一个驱动程序不必提供自己的缓存描述符链接情况而对已分配缓存描述符排队
NDIS_BUFFER_TO_SPAN_PAGES 确定给定的缓存取要使用多少物理页
内存函数
NdisAllocateMemory 在指定地址范围地将驻留(不分页)的系统空间内存以物理连续分配方式分配和/或以非cache方式分配
NdisAllocateMemorywithTag 如同调用NdisAllocateMemory,不同在于它允许调用者提供一个标记可用来跟踪驱动程序的内存分配
NdisEqualmemory 将一个内存块中的指定数量的字符与另一个内存块中相同数量的字符相比较
NdisFillMemory 用给定字符填充一个调用者所提供的缓存
NdisFreeMemory 释放早期由NdisAllocateMemory分配的内存块
NdisMoveMemory 从一调用者提供的位置将一指定数量的字节拷贝到另一地方
NdisZeroMeomory 用0填充内存块
NdisInitializeNPagedLookasideList 初始化一个预先分配的列表,在初始化成功以后,可以从预先分配列表中分配或向列表释放不分页的固定大小的块
NdisAllocateFromNPagedLookasideList 从一给定的预先分配的列表头中删除第一个项目。如果预先分配列表是空的,那么从不分页池中分配一个项目
NdisDeleteNPagedLookasideList 将一不分页预分配列表从系统中删除
NdisFreeToNPagedLookasideList 返回预分配列表的入口
NdisInitializeListHead 初始化一个顺序的,互锁的,单链表的表头
NdisInterlockedInsertTailList 插入一个项目,通常是一个包,到一个双链表的表尾,这使得可以在一个多处理器安全方式下同步访问列表
NdisInterlockedRemoveHeadList 从表头删除一个项目,这使得可以在一个多处理器安全方式下同步访问列表
NdisInitializeslistHead 初始化一个顺序的,互锁的,单链表的表头
NdisInterlockedPopEntrysList 从一个顺序的,单链表中删除第一个项目
NdisInterlockedPushEntrysList 在一个顺序的,单链表表头插入一个项目
NdisQueryDepthsList 返回一个给定的顺序的,单链表中当前项目数目
系统信息函数
NdisSystemProcessorCount 确定它的调用者运行在一个单处理器上还是多处理机上。一个NDIS驱动程序在分配资源之前的初始化中,调用这个函数
NdisGetCurrentProcessorCounts 返回驱动程序当前可使用的处理器的个数,驱动程序用它来确定CPU的利用情况
NdisGetCurrentProcessorCpuUsage 以百分比方式返回当前处理器使用率
NdisGetCurrentSystemTime 返回当前系统时间,用来设置时间戳
NdisGetSystemUptime 返回自从系统开始以来所经过的时间值,以微秒为单位
日志函数
NdisMCreateLog 分配和打开一个NIC微端口可写入数据的日志文件,这个文件由一个驱动程序提供的Win32应用程序显示
NdisMWriteLogData 为供驱动程序提供的Win32应用程序使用和显示日志,而将驱动程序提供的信息写入日志文件
NdisMFlushLog 清除日志文件
NdisMCloseLog 释放日志所使用的资源
NdisWriteErroLogEntry 向系统I/O出错日志文件写一条目
字符串函数
NdisAnsiStringToUnicodeString 将一给定数量ANSI字符串转化为一定数量的Unicode字符串
NdisEqualAnsiString 将两个ANSI字符串比较并且返回一个表明它们是否相等的值
NdisEqualString 在操作系统缺省的字符集下,比较两个字符串是否相等
NdisEqualUnicodeString 比较两个Unicode字符串并且返回一个表明它们是否相等的值
NdisFreeString 释放为缓存字符串分配的存储区
NdisInitAnsiString 初始化一ANSI字符串
NdisInitializeString 为一长度字符串分配存储区,并且以系统缺省的字符集初始化它
NdisInitUnicodeString 初始化一Unicode字符串
NdisPrintString 在调试窗口显示指定的字符串
NdisUnicodeStringToAnsiString 将一给定的Unicode字符串转换成ANSI字符串
NdisUpcaseUnicodeString 将一给定Unicode字符串副本转换为大写形式,并且返回转换后的字符串
文件函数
NdisOpenFile 返回一个已打开文件的句柄
NdisMapFile 如果文件未被映射,将一个已打开文件映射到一个调用者可访问的缓存中
NdisUnmapFile 释放一个由NdisMapFile建立的文件的虚地址映射
NdisCloseFile 释放由NdisOpenFile返回的句柄,并且释放文件打开时所分配给文件contex的内存
地址函数
NdisGetPhysicalAddressHigh 返回一个给定物理地址的高位部分
NdisGetPhysicalAddressLow 返回一个给定物理地址的低位部分
NdisSetPhysicalAddressHigh 将一个给定物理地址的高位部分设置为一个给定的值
NdisSetPhysicalAddressLow 将一个给定物理地址的低位部分设置为一个给定的值
NDIS_PHYSICAL_ADDRESS_CONST 初始化一个物理地址的静态常量类型
变量函数
NdisRetriveUlong 从源地址中取回一个ULONG值,避免对齐错误
NdisStoreUlong 存储一ULONG值到一指定地址,避免对齐错误
NdisInterlockedAddUlong 用一个原子操作将一个Unsigned long值与一个给定Unsigned integer相加,使用一个调用者提供的自旋锁来同步访问integer变量
NdisInterlockedDecrement 用一个原子操作减一
NdisInterlockedIncrement 用一个原子操作加一
注册函数
NdisReadRegisterUchar 从一个内存映射设备注册表中读取一个UCHAR
NdisReadRegisterUlong 从一个内存映射设备注册表中读取一个ULONG
NdisReadRegiseerUshort 从一个内存映射设备注册表中读取一个USHORT
NdisWriteRegisterUchar 向一个内存映射设备写入一个UCHAR
NdisWriteRegisterUlong 向一个内存映射设备写入一个ULONG
NdisWriteRegisterUshort 向一个内存映射设备写入一个USHORT
工作项目函数
NdisInitializeWorkItem 当一个系统工作线程获得控制时,用一个调用者提供的环境和回调例程,初始化一个工作队列来作为执行排队
NdisScheduleWorkItem 将一个给定工作项目插入到一个队列。一个系统工作线程删除项目,并且将控制给予驱动程序先前提供给NdisInitializeWorkItem的回调函数
NDIS提供的媒体相关宏
ETH_COPY_NETWORK_ADDRESS 将一个给定Ethernet地址拷贝到一个给定位置
FDDI_IS_BROADCAST 将一个调用者提供的变量设置为一个布尔值,它表示一个给定的FDDI地址是否是一个广播地址
FDDI_IS_MULTICAST 将一个调用者提供的变量设置为一个布尔值,它表示一个给定的FDDI地址是否是多点传输地址
FDDI_IS_SMT 设置一个调用者提供的变量为一布尔值,它表示是否给定的FDDI帧是SMT
TR_COMPARE_NETWORK_ADDRESS 将一个调用者提供的变量设置为一个布尔值,表明一个给定的Token Ring地址是大于、小于或等于另一个给定Token Ring地址的值
TR_COPY_NETWORK_ADDRESSES 将一个给定Token Ring地址拷贝到一给定位置
IR_IS_BROADCAST 将一个调用者提供的变量设置为一个布尔值,它表示一个给定的Token Ring地址是否是广播地址
TR_IS_FUNCTIONAL 将一个调用者提供的变量设置为一个布尔值,它表示一个给定Token Ring地址是否是函数地址
TR_IS_GROUP 将一个调用者提供的变量设置为一个布尔值,它表示一个给定Token Ring地址是否是一组地址
TR_IS_NOT_DIRECTED 将一个调用者提供的变量设置为一个布尔值,它表示一给定Token Ring地址是否既不是一个函数地址也不是一组地址
TR_IS_SOURCE_ROUTING 将一个调用者提供的变量设置为一个布尔值,它表示一给定Token Ring地址是否是一源路由地