Condividi tramite


Funzione NdisMFreeSharedMemory (ndis.h)

NdisMFreeSharedMemory libera memoria precedentemente allocata da NdisMAllocateSharedMemory o NdisMAllocateSharedMemoryAsyncEx dal driver di una scheda di interfaccia di rete DMA.

Sintassi

void NdisMFreeSharedMemory(
  [in] NDIS_HANDLE           MiniportAdapterHandle,
  [in] ULONG                 Length,
  [in] BOOLEAN               Cached,
  [in] PVOID                 VirtualAddress,
  [in] NDIS_PHYSICAL_ADDRESS PhysicalAddress
);

Parametri

[in] MiniportAdapterHandle

Specifica l'input originale dell'handle per MiniportInitializeEx.

[in] Length

Specifica il numero di byte allocati in origine.

[in] Cached

Specifica TRUE se l'allocazione originale è memorizzabile nella cache.

[in] VirtualAddress

Specifica l'indirizzo virtuale di base restituito da NdisMAllocateSharedMemory o NdisMAllocateSharedMemoryAsyncEx.

[in] PhysicalAddress

Specifica l'indirizzo fisico corrispondente restituito da NdisMAllocateSharedMemory o NdisMAllocateSharedMemoryAsyncEx.

Valore restituito

nessuno

Osservazioni

Se ha già effettuato una chiamata a NdisMAllocateSharedMemory o NdisMAllocateSharedMemoryAsyncEx, il driver miniport di un dispositivo DMA chiama NdisMFreeSharedMemory se si verifica una delle condizioni seguenti:

  • La funzione MiniportInitializeEx non è in grado di inizializzare la scheda di interfaccia di rete, quindi questa funzione deve rilasciare tutte le attestazioni esistenti per le risorse hardware per tale scheda di interfaccia di rete prima di restituire il controllo.
  • Scheda di interfaccia di rete per cui il driver miniport allocato la memoria viene rimossa.
  • Il driver viene scaricato, indipendentemente dal fatto che il sistema stia arrestando o perché l'utente ha riconfigurato i componenti di rete utilizzati nel computer.
  • Il driver ha allocato memoria condivisa aggiuntiva con NdisMAllocateSharedMemoryAsyncEx quando la richiesta di I/O su una scheda di interfaccia di rete era elevata, ma il traffico di rete è ora diminuito a un livello medio.
Un driver miniport non può chiamare NdisMFreeSharedMemory per liberare un sottoinsieme all'interno di un intervallo di memoria condiviso allocato. I parametri passati a NdisMFreeSharedMemory devono corrispondere esattamente a quelli passati a NdisMAllocateSharedMemory o NdisMAllocateSharedMemoryAsyncEx.

Non è possibile chiamare NdisMFreeSharedMemory da una funzione MiniportShutdownEx.

Microsoft Windows Server 2003, Windows XP Service Pack 1 e versioni successive di Windows consentono alle schede di interfaccia di rete DMA master del bus e alle schede di interfaccia di rete DMA subordinate di chiamare NdisMFreeSharedMemory. Le versioni precedenti consentono solo alle schede di interfaccia di rete DMA master del bus di chiamare NdisMFreeSharedMemory.

Requisiti

Requisito Valore
Client minimo supportato Supportato per i driver NDIS 6.0 e NDIS 5.1 (vedere NdisMFreeSharedMemory (NDIS 5.1)) in Windows Vista. Supportato per i driver NDIS 5.1 (vedere NdisMFreeSharedMemory (NDIS 5.1)) in Windows XP.
Piattaforma di destinazione Universale
Intestazione ndis.h (include Ndis.h)
Libreria Ndis.lib
IRQL <= DISPATCH_LEVEL
Regole di conformità DDI Irql_Miniport_Driver_Function(ndis), NdisMFreeSharedMemory(ndis)

Vedi anche

MiniportHaltEx

MiniportInitializeEx

MiniportSharedMemoryAllocateComplete

MiniportShutdownEx

NdisMAllocateSharedMemory

NdisMAllocateSharedMemoryAsyncEx