共用方式為


共用記憶體資源配置

若要配置 VM 佇列的共用記憶體資源,迷你埠驅動程式會呼叫 NdisAllocateSharedMemory 函式 。 例如,迷你埠驅動程式會在收到 OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE OID 時配置共用記憶體。 此外,迷你埠驅動程式可以在網路介面卡初始化期間為預設佇列配置共用記憶體。 如需配置佇列的詳細資訊,請參閱 配置 VM 佇列

迷你埠驅動程式可以配置更多記憶體給佇列,直到佇列釋放為止。 如需釋放佇列的詳細資訊,請參閱 釋放 VM 佇列

NDIS_SHARED_MEMORY_PARAMETERS結構會指定共用記憶體配置要求的共用記憶體參數。 迷你埠驅動程式會將此結構傳遞至 NdisAllocateSharedMemory 函式 。 NDIS 會將這個結構傳遞至 NetAllocateSharedMemory 函式 (,也就是ALLOCATE_SHARED_MEMORY_HANDLER進入點) 。

當迷你埠驅動程式配置共用記憶體時,它會指定下列專案:

  • 佇列識別碼。

  • 共用記憶體長度。

  • 如何使用共用記憶體。 例如,如果共用記憶體用於接收緩衝區,迷你埠驅動程式會指定 NdisSharedMemoryUsageReceive

如果未在 Flags 成員中設定NDIS_SHARED_MEM_PARAMETERS_CONTIGOUS旗標,可以在包含在非連續記憶體的散佈收集清單中指定共用記憶體。

NDIS_SHARED_MEMORY_USAGE列舉會指定如何使用共用記憶體。 NDIS_SHARED_MEMORY_USAGE列舉用於 NDIS_SHARED_MEMORY_PARAMETERSNDIS_SCATTER_GATHER_LIST_PARAMETERS 結構中。 如需 VMQ 接收資料緩衝區中共用記憶體參數的相關資訊,請參閱 接收緩衝區中的共用記憶體

NdisAllocateSharedMemory函式會提供下列專案給呼叫端:

  • 已配置記憶體的虛擬位址。

  • 散佈收集清單。

  • 共用記憶體控制碼 - 用於接收指示。

  • 配置控制碼 - 稍後用來識別記憶體。

迷你埠驅動程式會呼叫 NdisFreeSharedMemory 函式 ,以釋放佇列的共用記憶體。 如果迷你埠驅動程式已為非預設佇列配置共用記憶體,則會在釋放佇列時,將共用記憶體釋放在 OID_RECEIVE_FILTER_FREE_QUEUE OID 的內容中。 Miniport 驅動程式會在 MiniportHaltEx 函式的內容中釋放它們為預設佇列配置的共用記憶體。