NDIS函数简明手册

 这是从CSDN的《NDIS函数简明手册.pdf》转换为文本的内容,感谢kgdiwss

NDIS函数简明手册

函数                       描述
-----------------------------------------------
              无连接微端口的上层函数
-----------------------------------------------
DriverEntry                由操作系统调用来激活和初始化微端口驱动程序
MiniportAllocateComple     调用它来指示以前调用的 NdisMAllocateMemoryAsync   已经完成
MiniportCheckForHang       检查NIC的内部状态
MiniportDisableInterrupt   禁止NIC产生中断
MiniportEnableInterrupt    允许NIC产生中断
MiniportHalt               重新分配和重新注册NIC占用的资源并且终止 NIC以使它不再有用
MiniportHandleInterrupt    延期用来完成 I/O中断函数的执行
MiniportInitialize         出始化 NIC
MiniportISR                作为 NIC中断服务例程以高权值运行
MiniportQueryInformation   查询微端口驱动程序的性能和当前状态
MiniportReconfigure        未使用
MiniportReset              对 NIC发出一个硬件重置
MiniportReturnPacket       从上层接收一个包,这个包是在这之前通过调用NdisMIndicateReceivePacket 函数传上去的包
MiniportSend               如果驱动程序没有 MiniportSendPadcets或 MiniportWanSend函数,它用来将一个包通过
                           NIC传递到网络上
MiniportSendPackets        通过 NIC传递一组包到网络上
MiniportSetInformation     变换(设置)关于微端口驱动程序或它的 NIC的信息
MiniportShutdown           当系统暂时关闭时,将 NIC恢复到初始状态
MiniportSynchronizeISR     同步访问与 MiniportISR或 MiniportDisableInterrupt共享的资源。如果有运行在 DIRQL下的
                           NIC驱动程序函数与驱动程序的 MiniportISR或 MiniportDisableInterrupt函数共享资源,需要
                           此函数
MiniportTimer              如果微端口的 NIC不产生中断,用于轮询 NIC的状态
MiniportTransferData       将由 NIC接收到的包的内容拷贝到一个给定的包缓存中
MiniportWanSend            如果驱动程序控制着 WAN NIC,通过 NIC发送一个包到网络上

-----------------------------------------------
               面向连接微端口的上层函数
-----------------------------------------------
DriverEntry                          由操作系统调用来激活和初始化微端口驱动程序
MiniportAllocateComplete             调用它来指示以前调用的 NdisMAllocateMemoryAsync已经完成
MiniportChecKForHang                 检查 NIC的内部状态
MiniportCoActivateVc                 激活一个虚连接(VC)
MiniportCoCreateVc                   为一个 VC建立 VC状态
MiniportCoDeactivateVc               为一个 VC释放 VC的状态
MiniportCoDeleteVc                   删除一个 VC
MiniportCoRequest                    查询微端口驱动程序的能力和当前状态或改变 (设置)有关微端口驱动程序或它的
                                     NIC的信息
MiniportCoSendPackets                通过一个 NIC发送一组包到网络上
MiniportDisableInterrupt             禁止一个 NIC产生中断
MiniportEnableInterrupt              允许一个 NIC产生中断
MiniporeHalt                         收回和注销 NIC占用的资源并且终止 NIC以使它不再使用
MiniportHandIeInterrupt              延期用来完成 I/O中断函数的执行
MiniportInitialize                   初始化 NIC
MiniportISR                          作为 NIC中断服务例程以高权值运行
MiniportReconfigure                  未使用
MiniporeReset                        对 NIC发出一个硬件重置
MiniportReturnPacket                 从上层接收一个包,这个包是在这以前通过调用 NdisMCoIndicateReceivePacket
                                     传上去的
MiniportShutdown                     一个可选择函数,当系统关闭时,将 NIC恢复到它的初始状态
MiniportSynchronizpISR               同步访问与 MiniportISR或 MiniportDisableInterrupt共享的资源,如果有运行在
                                     DIRQL下的 NIC驱动程序函数与驱动程序
                                     的 MiniportISR或 MiniportDisableInterrupt函数共享资源
MiniportTimer                        如果微端口 NIC不产生中断,轮询一个 NIC状态
MiniportWanSend                      如果驱动程序控制着 WAN NIC ,通过网络接口卡发送一个包到网络上

-----------------------------------------------
           初始化和注册函数
-----------------------------------------------
NdisMInitializeWrapper               为微端口驱动程序初始化 NDIS库数据结构
NdisMRegisterMiniport                向 NDIS提供有关微端口驱动程序的信息
NdisMSetAttributes                   向 NDIS库报告微端口驱动程序所支持的 NIC的类型并且传递指向微端口的环境区域
                                     的句柄。NDIS将在接下来的调用中把这个句柄传递给 MiniportXxx函数
NdisMSetAtteributesEx                除了如同 NdisMSetAttributes一样传递同样的信息,这个函数改变了缺省的 NIC超
                                     时动作,并且允许一个微端口指定一些附加的标志。一个驱动程序,例如一个NDIS中
                                     间层驱动程序或一个非串行化微端口驱动程序,如果必须指定一个或多个这种标志的
                                     话,则必须调用这个函数而不是 NdisMSetAttributes
NdisMGetDeviceProperty               检索出设备对象,这个对象被用来通过一个总线驱动程序来建立一个与 NIC的通信。
                                     例如,USB和 IEEE 1394总线驱动程序
NdisMQueryAdapterResources           返回一个 NIC硬件资源列表
NdisMQueryInformationComplete        指示 NDIS先前的 MiniporeQueryInformation操作完成。仅被无连接微端口调用
NdisMSetInformationComplete          报告NDIS库,以前的MiniportSetInofrmation操作已经完成,仅被无连接微端口调用
NdisOpenConfiguration                提供一个调用者可以用来调用 NdisReadConfiguration,NdisWriteConfiguration,
                                     NdisOpenConfigur ationByIndex或 NdisOpenConfigurationByName的句柄
NdisOpenCanfigurationByIndex         打开一个给定的已打开的注册表中的主键值的一个子键,而这个主键是由一个调用者
                                     所提供的句柄指定
NdisOpenConfigarationByName          打开一个给定的已打开的注册表中的主键值的一个指定的子键,这个主键是由一个调
                                     用者所提供的句柄指定
NdisReadConfiguration                使用由调用 NdisOpenConfiguration所获得的参数句柄来读取存储在注册表中的指定
                                     键名的键值,键值将传给 NdisReadConfigration
NdisWriteConfiguration               使用由调用 NdisOpenConfiguration所获得的参数句柄将键值写入注册表,键值传给
                                     NdisWriteConfiguration
NdisCloseConfiguration               关闭一个通过调用 NdisOpenConfiguration而打开的注册表句柄
NdisMRegisterAdapterShutdownHandler  注册一个 NIC驱动程序提供的 Miniportshutdown函数,它在系统将要关闭时被调用
NDIS_INIT_FUNCTION                   注明一个驱动程序函数仅在初始化时开始运行
NDIS_PAGEABLE_FUNCTION               注明一个驱动程序函数是可分页代码

-----------------------------------------------
              硬件设置函数
-----------------------------------------------
NdisReadEisaSlotInformation          读取 EISA NIC插槽信息并且将它拷贝到 NIC驱动程序所提供的一个缓存中
NdisReadEisaSlotInformationEx        为一个支持可选择设置的 EISA NIC读取插槽信息和有关的一系列函数的信息,并且
                                     将这些设置拷贝到 NIC驱动程序所提供的缓存中
NdisImmediateReadPciSlotInformation  从一个指定 PCI设备的设置区间读取一个指定长度的字节
NdisImmediateWritePciSlotInformation 向一个指定 PCI设备的设置区间写入一个指定长度的字节
NdisMPciAssignResources              返回一个指定 PCI设备所声明的资源列表
NdisReadPciSlotInformation           从一个指定 PCI设备的设置区间读取一个指定长度的字节
NdisWritePciSlotInformation          向一个指定 PCI设备的设置区间写入一个指定长度的字节
NdisReadPcmciaAttributeMemory        为一个 PC卡的 NIC从属性内存中读取与总线相关的设置参数
NdisWritePcmciaAttributeMemory       为一个 PC卡 NIC向属性内存写入与总线相关的设置参数
NdisReadNetworkAddress               返回软件可设置的网络地址,它是在 NIC安装在机器中时为 NIC存储在注册表中的
-----------------------------------------------
             I/O端口函数
-----------------------------------------------
NdisMRegisterIoPortRange       为使用 NdisRawReadPortXxx和 NdisRawWriteportXxx函数建立 I/O访问端口
NdisMDeregisterIoProtRange     删除早期由 NdisMRegisterIoPortRange注册的 I/O访问端口
NdisMMapIospace                为随后的内存映射 I/O操作映射一定范围的设备内存
NdisZeroMappedMemory           将早期调用 NdisMMapIoSpace映射的内存块以 0 填充
NdisMoveFromMappedMemory       将在初始化时由 NdisMMapIoSpace所映射的设备内存中的数据拷贝到一个系统空间的缓存中
NdisMoveToMappedMemory         将数据从一个系统空间缓存中拷贝到在初始化时由NdisMMapIoSpace所映射的设备内存中
NdisMUnmapIoSpace              释放调用 NdisMMapIoSpace所映射的区域
NdisImmediateReadSharedMemory  在驱动程序调用 NdisMMapIoSpace之前从共享内存地址中读取一块数据到缓存
NdisImmediateWriteSharedMemory 在驱动程序调用NdisMMapIoSpace之前向一个共享内存地址中写入缓存中的数据
NdisRawReadPortXxx             从一个 I/O端口读取唯一的一条数据,具体的函数包括:NdisRawReadPortUchor,
                               NdisRawReadportUlong,NdisRawReadportUshort
NdisRawReadPortBufferXxx       从一个 I/O端口一次读取数据到缓存,具体函数包括:NdisRawReadPortBufferUchar,
                               NdisRawReadPortBufferUlong,NdisRawReadPortBufferUshort
NdisRawWritePortXxx            向一个 I/O端口写入一条数据,具体函数包括:NdisRawWritePortUchar,
                               NdisRawWritePortUlong,NdisRawWritePortUshourt
NdisRawWritePortBufferXxx      将缓存中的数据写入 I/O端口,具体函数包括:NdisRawWritePortBufferUch,
                               NdisRawWritePortBufferUlong,NdisRawWritePortBufferUshort
NdisImmediateReadPortXxx       在驱动程序调用 NdisMRegisterIoPortRange映射端口之前从一个I/O端口读取一条数据。
                               具体函数包括:NdisImmediateReadPortUcha,NdisImmediateReadPortUshort,
                               NdisImmeduateReadPortUlong
NdisImmediateWritePortXxx      在驱动程序调用 NdisMRegisterIoPortRange映射端口之前向一个 I/O端口写一条数据。
                               具体函数包括:NdisImmediateWritePortUch,NdisImmediateWritePortUshort,
                               NdisImmediateWritePortUlong

-----------------------------------------------
             DMA相关的函数
-----------------------------------------------
NdisMAllocateMapRegisters          为使用总线管理器的 DMA设备分配映射注册表
NdisMAllocateShareMemory           分配系统与一个总线管理器 DMA 和 NIC共享的内存。它在驱动程序初始化时以 IRQL
                                   PASSIVE_LEVEL调用
NdisMAllocateShareMemoryAsync      调用它提升 IRQL,例如一个微端口的 MiniportHandleInterrupt函数为总线管理器
                                   DMA NIC分配共享内存
NdisMCompleteBufferPhysicalMapping 释放早期为一个总线管理器DMA操作而调用 NdisMStartBufferPhysicalMapping所使用
                                   的映射注册表。仅在 DMA初始化时由调用NdisMAllocateMapRegisters的驱动程序调用
NdisMCompleteDmaTransfer           指示 NDIS库一个从属的 DMA操作已完成
NdisMDeregisterDmaChannel          在微端口驱动程序的 DMA通道上释放它的声明
NdisFlushBuffer                    在发送数据到 NIC或从 NIC转移数据之前,调用它来确保在总线管理器 DMA运行的
                                   cache和主机物理内存之间一致
NdisGetCacheFillSize               返回微处理器的以字节为单位的 cache边界。DMA NIC的驱动程序可以使用由这个函数
                                   返回的信息以避免在 DMA传输时与 cache断开
NdisMFreeMapRegisters              释放总线管理器 DMA的映射注册表,它是早期由 NdisMAllocateMapRegisters分配的
NdisMFreeSharedMemory              释放早期由 NdisMAllocateSharedMemory或 NdisMAllocateSharedMemoryAsync分配的
                                   内存
NdisMInitializeScatterGatherDma    为使用 DMA驱动程序保留系统资源,仅被非串行化或面向连接微端口调用
NdisMReadDmaCounter                读取系统DMA管理器的计数器的当前值
NdisMRegistgerDmaChannel           为将来从属的 DMA操作建立一个 DMA通道控制
NdisMSetupDmaTransfer              为从属的 DMA传递设置一个主机系统的 DMA控制器NdisMStarBufferPhysicalMapping    
                                   为一个总线管理器 DMA操作产生一个物理地址映射,仅在 DMA初始化时调用
                                   NdisMAllocateMapRegisters的驱动程序调用
NdisMUpdateSharedMemory            确保在总线管理器 DMA操作时从共享内存区读取的数据是最新的
NdisQueryMapRegisterCount          返回所有可能的映射注册表数量。在调用 NdisMAllocateMapRegisters之前驱动程序调
                                   用NdisQueryMapRegisterCount来选择实际分配多少注册表

-----------------------------------------------
            中断处理函数
-----------------------------------------------
NdisMDeregisterInterrupt      是一个中断处理程序停止接收中断。操作系统断开 NIC中断相连的中断服务函数的联系
NdisMRegisterInterrupt        连接微端口中断服务函数 (MiniportISR)和由它的 NIC所产生的中断
NdisMSynchronizeWithInterrupt 任何与 MiniportISR或 MiniportDisableInterrupt函数共享资源的 NIC驱动程序函数必须同
                              步访问这些资源以防止争用发生。通过调用NdisMSynchronizeWithInterrupt 和传递一个
                             MiniportSynchronizeISR函数的地址,来使函数与MiniportISR和 MiniportDisableInterrupt
                              同步。MiniportSynchronzeISR运行在 DIRQL上,所以它可以安全地访问共享资源
                             
                             
-----------------------------------------------
         同步函数
-----------------------------------------------
NdisMCanceltimer              取消早期由 NdisMSetTimer设置的一个时钟
NdisMInitializeTimer          初始化一个时钟对象并且将对象与一个 MiniportTimer函数相连
NdisMSetTimer                 设置一个时钟在一个指定间隔之后停止
NdisMSetPeriodicTimer         设置时钟每隔一个指定时间后停止,或直到调用 NdisMCancelTimer后才停止
NdisMsleep                  引起调用者的线程阻塞指定的间隔。驱动程序在初始化或当停止适配器时,调用 NdisMsleep。
                            例如,当等待NIC完成初始化时。NdisMsleep仅在 IRQL PASSIVEL_LEVEL下被调用
NdisStallExecution            引起调用者的线程停止一个指定间隔,不超过 50微秒。此时不能使用 NdisMSleep,
                              NdisStallExecution仅在升高的 IRQL下被调用
NdisInitializeEvent           产生和初始化一个用来同步驱动程序操作的事件
NdisSetEvent                  为指定事件设置信号量
NdisResetEvent                重新设置指定事件为无信号状态
NdisWaitEvent                 引起调用者等待到指定事件被指示或指定时间间隔结束时为止
NdisAllocateSpinLock          初始化一个的NDIS_SPIN_LOCK类型变量,它被用来同步访问非 ISR驱动程序函数之间共享的
                              资源
NdisFreeSpinLock              释放一个在调用 NdisAllocateSpinLock过程中初始化的自旋锁
NdisAcquireSpinLock           获得一个自旋锁来保护在一个SMP安全方式下运行的非ISR驱动程序函数之间的共享资源的访
                              问。运行在 IRQL<DISPATCH_LEVEL下的微
                              端口调用这个函数来获得一个自旋锁
NdisReleaseSpinLock           释放一个早期调用 NdisAcquireSpinLock获得的自旋锁
NdisDprAcquireSpinLock        获得一个在 IRQL DISPATCH_LEVEL下的自旋锁。它保护在一个 SMP安全模式下运行的非 ISR
                              驱动程序函数间的共享资源访问。它比为运行在 IRQL DISPATCH_LEVEL上的驱动程序函数调
                              用 NdisAcquireSpinLock要快
NdisDprReleaseSpinLock        释放一个早期调用NdisDprAcquireSpinLock获得的自旋锁
NdisInitializeReadWriteLock   初始化一个 NDIS_RW_LOCK类型变量。NDIS_RW_LOCK变量用来限制对一个非ISR驱动程序线程
                              的共享资源一次进行一个写访问。这个NDIS_RW_LOCK允许多个非 ISR驱动程序线程同时读这
                              些资源。这个读访问在写访问时是不允许的
NdisAcquireReadWriteLock      获得一个调用者用来在多个驱动程序线程的共享资源间进行写或读访问的锁。运行在
                              IRQL<DISPAICH_LEVEL下的微端口调用这个函
                              数来获得一个读-写锁。读-写锁适用经常进行读访问但很少进行写访问的资源
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           向相关上层指示一个或多个包
NdisMArcIndicateReceive,
NdisMEthIndicateReceive,
NdisMFddiIndicateReceive,
NdisMTrIndicateReceive               指示一个指定介质类型的包正在接收

NdisMArcIndicateReceiveComplete,
NdisMEthIndicateReceiveComplete,
NdisMFddiIndicateReceiveComplete,
NdisMTrIndicate ReceiveComplete      指示一个包接收操作已完成
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地址是否是一源路由地址

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值