Funzione RxInitializeContext (rxcontx.h)
RxInitializeContext inizializza una struttura di dati RX_CONTEXT esistente.
Sintassi
void RxInitializeContext(
[in, optional] IN PIRP Irp,
[in] IN PRDBSS_DEVICE_OBJECT RxDeviceObject,
[in] IN ULONG InitialContextFlags,
[in, out] IN OUT PRX_CONTEXT RxContext
);
Parametri
[in, optional] Irp
Puntatore all'IRP da incapsulare da questa struttura RX_CONTEXT.
[in] RxDeviceObject
Puntatore all'oggetto dispositivo a cui si applica questa RX_CONTEXT e IRP.
[in] InitialContextFlags
Set di valori iniziali per il membro Flags della struttura di dati RX_CONTEXT da archiviare nella struttura RX_CONTEXT. Questi valori iniziali possono essere una combinazione delle enumerazioni seguenti:
RX_CONTEXT_FLAG_WAIT
Quando questo valore è impostato, l'IRP non deve essere pubblicato per l'esecuzione successiva del processo di file system, ma deve essere atteso per il completamento.
RX_CONTEXT_FLAG_MUST_SUCCEED
Quando questo valore è impostato, l'operazione deve avere esito positivo. Questo valore non è attualmente usato da RDBSS, ma può essere usato dai driver mini-redirector di rete.
RX_CONTEXT_FLAG_MUST_SUCCEED_NONBLOCKING
Quando questo valore è impostato, l'operazione deve avere esito positivo per le operazioni non bloccate. Questo valore non è attualmente usato da RDBSS, ma può essere usato dai driver mini-redirector di rete.
[in, out] RxContext
Puntatore al RX_CONTEXT da inizializzare.
Valore restituito
nessuno
Osservazioni
RxInitializeContext viene chiamato internamente dalla routine RxCreateRxContext . Pertanto, la routine RxInitializeContext normalmente viene usata solo dai driver min-redirector di rete che allocano direttamente le strutture RX_CONTEXT anziché chiamare la routine RxCreateRxContext per allocare e inizializzare una struttura RX_CONTEXT.
Se il parametro Irp è configurato per l'operazione asincrona, il membro Flags della struttura RX_CONTEXT puntato da RxContext ha anche il valore impostato di seguito:
RX_CONTEXT_FLAG_ASYNC_OPERATION è impostato anche per le condizioni seguenti:
- Il membro MajorFunctiondell'Irp è IRP_MJ_READ, IRP_MJ_WRITE o IRP_MJ_DEVICE_CONTROL.
- Il membro MajorFunction dell'Irp è un IRP_MJ_DIRECTORY_CONTROL e il membro MinorFunctiondell'IRP è un IRP_MN_NOTIFY_CHANGE_DIRECTORY.
- Il membro MajorFunctiondell'Irp è un membro IRP_MJ_FILE_SYSTEM_CONTROL e NetRoot dell'FCB associato non è NULL e il membro Type del NET_ROOT è NET_ROOT_PIPE.
Se il parametro RxDeviceObject indica che si tratta dell'oggetto dispositivo RDBSS di primo livello, il membro Flags della struttura RX_CONTEXT ha anche il valore impostato di seguito:
Se il membro Irp FileObject Flags ha l'opzione FO_WRITE_THROUGH impostata, il membro Flags della struttura RX_CONTEXT ha anche il valore impostato di seguito:
RxInitializeContext imposta un numero di altri membri nella struttura RX_CONTEXT, tra cui quanto segue:
- Imposta il valore NodeTypeCode appropriato, NodeByteSize, SerialNumber, RxDeviceObject e inizializza ReferenceCount su 1.
- Inizializza syncEvent
- Inizializzare l'oggetto ScavengerEntry associato
- Inizializza la voce di elenco di BlockedOperations
- Imposta i membri RX_CONTEXT in base all'Irp. Sono inclusi i membri CurrentIrp, OriginalThread, MajorFunction, MinorFunction, CurrentIrpSp, pFcb, NonPagedFcb, pFobx, pRelevantSrvOpen e FobxSerialNumber .
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Desktop |
Intestazione | rxcontx.h (include Rxprocs.h rxcontx.h) |
IRQL | <= APC_LEVEL |
Vedi anche
RxDereferenceAndDeleteRxContext_Real
RxResumeBlockedOperations_Serially