使用即插即用 I/O 请求访问 PCMCIA 属性内存

本部分介绍电脑卡或 Cardbus 卡驱动程序如何使用即插即用 I/O 请求访问属性内存。

驱动程序通常使用此方法初始化设备、配置设备或从设备获取信息。 如果 I/O 开销是可接受的,并且可以通过 IRQL < DISPATCH_LEVEL进行访问,则驱动程序应使用此方法。

驱动程序只能在 IRQL < DISPATCH_LEVEL运行时使用此方法。

驱动程序执行以下操作序列:

  • 创建并初始化新的IRP_MJ_PNP请求。

    驱动程序指定 IRP_MN_READ_CONFIGIRP_MN_WRITE_CONFIG 次要函数。

  • 获取下一个堆栈位置。

  • 在新堆栈位置中设置 Parameters.ReadWriteConfig 结构的以下成员:

    WhichSpace
    指定PCCARD_ATTRIBUTE_MEMORY的值。

    缓冲区
    指向驱动程序为访问分配的分页内存缓冲区的指针。 对于写入操作,缓冲区包含要写入配置空间的数据。 对于读取操作,缓冲区为零填充缓冲区。 请求完成后,此缓冲区保存从设备读取的属性内存的副本。

    抵消
    指定从开始读取或写入操作的属性内存基的基的 WORD 偏移量。

    长度
    指定驱动程序为请求分配的缓冲区的大小(以字节为单位)。

  • 设置完成例程。

  • 将请求向下发送到设备堆栈。