Metodo IMiniportWavePciStream::RevokeMappings (portcls.h)
Il RevokeMappings
metodo revoca i mapping ottenuti in precedenza tramite IPortWavePciStream::GetMapping.
Sintassi
NTSTATUS RevokeMappings(
[in] PVOID FirstTag,
[in] PVOID LastTag,
[out] PULONG MappingsRevoked
);
Parametri
[in] FirstTag
Specifica il valore del tag che identifica il primo mapping revocato.
[in] LastTag
Specifica il valore del tag che identifica l'ultimo mapping revocato.
[out] MappingsRevoked
Puntatore di output per il conteggio dei mapping revocati. Questo parametro punta a una variabile ULONG in cui il metodo scrive il numero di mapping effettivamente revocati dalla chiamata. Questo numero esclude eventuali mapping nell'intervallo FirstTag in LastTag già rilasciato dal driver miniport. A causa di problemi di sincronizzazione, alcuni mapping nell'intervallo potrebbero essere rilasciati tra il momento in cui il driver della porta determina l'elenco dei mapping da revocare e la chiamata a RevokeMappings
. Per ulteriori informazioni, vedere la sezione Osservazioni successiva.
Valore restituito
RevokeMappings
restituisce STATUS_SUCCESS se la chiamata ha esito positivo. In caso contrario, il metodo restituisce un codice di errore appropriato.
Commenti
Il driver di porta chiama RevokeMappings
per revocare i mapping del flusso quando:
- Una richiesta di I/O viene annullata e la memoria mappata in precedenza potrebbe non essere più disponibile.
- Lo stato del flusso viene modificato in KSSTATE_STOP (vedere KSSTATE) e il dispositivo non ha più bisogno dei mapping.
RevokeMapping
metodo revoca tutti i mapping nella sequenza che inizia con il mapping identificato da FirstTag e termina con il mapping identificato da LastTag. Sono inclusi i mapping identificati da FirstTag e LastTag e tutti i mapping tra. Il driver miniport revoca ogni mapping rimuovendolo dall'elenco dei mapping disponibili.
Il RevokeMapping
metodo può essere usato per rimuovere un singolo mapping impostando FirstTag e LastTag sullo stesso valore.
Il driver di porta può chiamare RevokeMappings
in modo asincrono rispetto alle operazioni di manutenzione del driver miniport nella coda di trasferimento a dispersione/raccolta del controller DMA. L'accesso a questa coda deve essere protetto da una primitiva di sincronizzazione. Ad esempio, nel driver audio di esempio ac97 in Microsoft Windows Driver Kit (WDK), questa operazione viene eseguita circondando le sezioni di codice critiche con chiamate KeAcquireSpinLock e KeReleaseSpinLock . Poiché il driver miniport può rilasciare mapping in modo asincrono rispetto alle chiamate del driver di porta a RevokeMappings
, il driver miniport potrebbe essere stato rilasciato in precedenza (vedere IPortWavePciStream::ReleaseMapping) uno o più mapping specificati nella RevokeMappings
chiamata.
Per altre informazioni sui mapping, vedere WavePci Latency.
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Universale |
Intestazione | portcls.h (includere Portcls.h) |
IRQL | DISPATCH_LEVEL |
Vedi anche
IPortWavePciStream::GetMapping