funzione RxDereferenceAndDeleteRxContext_Real (rxcontx.h)
RxDereferenceAndDeleteRxContext_Real dereferenzia una struttura di dati RX_CONTEXT e se il membro ReferenceCount passa a zero, dealloca e rimuove la struttura di RX_CONTEXT specificata dalle strutture di dati in memoria RDBSS.
Sintassi
void RxDereferenceAndDeleteRxContext_Real(
[in] IN PRX_CONTEXT RxContext
);
Parametri
[in] RxContext
Puntatore alla struttura RX_CONTEXT da rimuovere.
Valore restituito
nessuno
Osservazioni
RxDereferenceAndDeleteRxContext_Real viene chiamato da routine diverse da RxCompleteRequest durante le richieste asincrone che toccano il parametro RxContext nel thread di avvio o in un altro thread. Pertanto, la struttura dei dati RX_CONTEXT viene conteggiata e finalizzata sull'ultima dereferenziazione.
Se il membro ReferenceCount della struttura RX_CONTEXT a cui punta il parametro RxContext non è zero dopo essere stato derefenced (decrementato) dalla routine RxDereferenceAndDeleteRxContext_Real , RxDereferenceAndDeleteRxContext_Real fa sì che il sistema asserissi nelle build controllate.
La routine RxDereferenceAndDeleteRxContext_Real esegue una serie di controlli specifici prima di rimuovere un RX_CONTEXT. Questi controlli includono quanto segue:
- Se il membro AcquireReleaseFcbTrackerX è 0, RxDereferenceAndDeleteRxContext_Real fa sì che il sistema asserissi nelle build controllate.
- Se il membro NumberOfActiveContexts della struttura RDBSS_DEVICE_OBJECT associata punta a RxContext->RxDeviceObject non è zero dopo essere stato dereferenziato (decrementato) e il membro StartStopContext.pStopContext della struttura RDBSS_DEVICE_OBJECT associata non è NULL, RxDereferenceAndDeleteRxContext_Real segnalerà syncEvent nella struttura RX_CONTEXT nel membro StartStopContext.pStopContext .
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Desktop |
Intestazione | rxcontx.h (include Rxprocs.h rxcontx.h) |
IRQL | <= APC_LEVEL |
Vedi anche
RxResumeBlockedOperations_Serially