struktur RX_CONTEXT (rxcontx.h)
Struktur RX_CONTEXT merangkum IRP untuk digunakan oleh RDBSS, pengalih mini jaringan, dan sistem file. Struktur RX_CONTEXT menjelaskan IRP saat sedang diproses oleh pengalih mini jaringan dan berisi informasi status yang memungkinkan sumber daya global dirilis saat IRP selesai.
Sintaks
typedef struct _RX_CONTEXT {
NODE_TYPE_CODE NodeTypeCode;
NODE_BYTE_SIZE NodeByteSize;
__volatile ULONG ReferenceCount;
LIST_ENTRY ContextListEntry;
UCHAR MajorFunction;
UCHAR MinorFunction;
BOOLEAN PendingReturned;
BOOLEAN PostRequest;
PDEVICE_OBJECT RealDevice;
PIRP CurrentIrp;
PIO_STACK_LOCATION CurrentIrpSp;
PMRX_FCB pFcb;
PMRX_FOBX pFobx;
PMRX_SRV_OPEN pRelevantSrvOpen;
PNON_PAGED_FCB NonPagedFcb;
PRDBSS_DEVICE_OBJECT RxDeviceObject;
PETHREAD OriginalThread;
PETHREAD LastExecutionThread;
__volatile PVOID LockManagerContext;
PVOID RdbssDbgExtension;
RX_SCAVENGER_ENTRY ScavengerEntry;
ULONG SerialNumber;
ULONG FobxSerialNumber;
ULONG Flags;
BOOLEAN FcbResourceAcquired;
BOOLEAN FcbPagingIoResourceAcquired;
UCHAR MustSucceedDescriptorNumber;
union {
struct {
union {
NTSTATUS StoredStatus;
PVOID StoredStatusAlignment;
};
ULONG_PTR InformationToReturn;
};
IO_STATUS_BLOCK IoStatusBlock;
};
union {
ULONGLONG ForceLonglongAligmentDummyField;
PVOID MRxContext[MRX_CONTEXT_FIELD_COUNT];
};
PVOID WriteOnlyOpenRetryContext;
PMRX_CALLDOWN MRxCancelRoutine;
PRX_DISPATCH ResumeRoutine;
RX_WORK_QUEUE_ITEM WorkQueueItem;
LIST_ENTRY OverflowListEntry;
KEVENT SyncEvent;
LIST_ENTRY BlockedOperations;
PFAST_MUTEX BlockedOpsMutex;
LIST_ENTRY RxContextSerializationQLinks;
union {
struct {
union {
FS_INFORMATION_CLASS FsInformationClass;
FILE_INFORMATION_CLASS FileInformationClass;
};
PVOID Buffer;
union {
LONG Length;
LONG LengthRemaining;
};
BOOLEAN ReplaceIfExists;
BOOLEAN AdvanceOnly;
} Info;
struct {
UNICODE_STRING SuppliedPathName;
NET_ROOT_TYPE NetRootType;
PIO_SECURITY_CONTEXT pSecurityContext;
} PrefixClaim;
};
union {
struct {
NT_CREATE_PARAMETERS NtCreateParameters;
ULONG ReturnedCreateInformation;
PWCH CanonicalNameBuffer;
PRX_PREFIX_ENTRY NetNamePrefixEntry;
PMRX_SRV_CALL pSrvCall;
PMRX_NET_ROOT pNetRoot;
PMRX_V_NET_ROOT pVNetRoot;
PVOID EaBuffer;
ULONG EaLength;
ULONG SdLength;
ULONG PipeType;
ULONG PipeReadMode;
ULONG PipeCompletionMode;
USHORT Flags;
NET_ROOT_TYPE Type;
UCHAR RdrFlags;
BOOLEAN FcbAcquired;
BOOLEAN TryForScavengingOnSharingViolation;
BOOLEAN ScavengingAlreadyTried;
BOOLEAN ThisIsATreeConnectOpen;
BOOLEAN TreeConnectOpenDeferred;
UNICODE_STRING TransportName;
UNICODE_STRING UserName;
UNICODE_STRING Password;
UNICODE_STRING UserDomainName;
} Create;
struct {
ULONG FileIndex;
BOOLEAN RestartScan;
BOOLEAN ReturnSingleEntry;
BOOLEAN IndexSpecified;
BOOLEAN InitialQuery;
} QueryDirectory;
struct {
PMRX_V_NET_ROOT pVNetRoot;
} NotifyChangeDirectory;
struct {
PUCHAR UserEaList;
ULONG UserEaListLength;
ULONG UserEaIndex;
BOOLEAN RestartScan;
BOOLEAN ReturnSingleEntry;
BOOLEAN IndexSpecified;
} QueryEa;
struct {
SECURITY_INFORMATION SecurityInformation;
ULONG Length;
} QuerySecurity;
struct {
SECURITY_INFORMATION SecurityInformation;
PSECURITY_DESCRIPTOR SecurityDescriptor;
} SetSecurity;
struct {
ULONG Length;
PSID StartSid;
PFILE_GET_QUOTA_INFORMATION SidList;
ULONG SidListLength;
BOOLEAN RestartScan;
BOOLEAN ReturnSingleEntry;
BOOLEAN IndexSpecified;
} QueryQuota;
struct {
ULONG Length;
} SetQuota;
struct {
PV_NET_ROOT VNetRoot;
PSRV_CALL SrvCall;
PNET_ROOT NetRoot;
} DosVolumeFunction;
struct {
ULONG FlagsForLowIo;
LOWIO_CONTEXT LowIoContext;
};
};
PWCH AlsoCanonicalNameBuffer;
PUNICODE_STRING LoudCompletionString;
__volatile LONG AcquireReleaseFcbTrackerX;
__volatile ULONG TrackerHistoryPointer;
RX_FCBTRACKER_CALLINFO TrackerHistory[RDBSS_TRACKER_HISTORY_SIZE];
ULONG ShadowCritOwner;
} RX_CONTEXT, *PRX_CONTEXT;
Anggota
NodeTypeCode
Jenis node unik yang digunakan untuk struktur RX_CONTEXT. Semua jenis struktur utama (RX_CONTEXT, SRV_CALL, NET_ROOT, V_NET_ROOT, SRV_OPEN, FCB, dan FOBX, misalnya) yang digunakan oleh RDBSS memiliki kode jenis node dua byte unik yang ditentukan dalam file nodetype.h yang dapat digunakan untuk penelusuran kesalahan. RDBSS mengatur anggota ini ke RDBSS_NTC_RX_CONTEXT ketika RX_CONTEXT diinisialisasi dalam rutinitas RxInitializeContext . Jika driver pengalih mini jaringan menginisialisasi struktur RX_CONTEXT menggunakan beberapa metode lain, anggota ini harus diatur.
RDBSS mendefinisikan anggota ini sebagai bagian dari header standar untuk semua struktur yang digunakan oleh RDBSS.
NodeByteSize
Ukuran, dalam byte, dari struktur ini. RDBSS mengatur anggota ini ke sizeof( RX_CONTEXT) ketika RX_CONTEXT diinisialisasi dalam rutinitas RxInitializeContext . Jika driver pengalih mini jaringan menginisialisasi struktur RX_CONTEXT menggunakan beberapa metode lain, anggota ini harus diatur.
RDBSS mendefinisikan anggota ini sebagai bagian dari header standar untuk semua struktur yang digunakan oleh RDBSS.
ReferenceCount
Jumlah referensi untuk struktur ini setelah dialokasikan. RDBSS menetapkan anggota ini ke 1 ketika RX_CONTEXT dialokasikan dan diinisialisasi dalam rutinitas RxInitializeContext . Jika driver pengalih mini jaringan menginisialisasi struktur RX_CONTEXT menggunakan beberapa metode lain, anggota ini harus diatur.
RDBSS mendefinisikan anggota ini sebagai bagian dari header standar untuk semua struktur yang digunakan oleh RDBSS.
ContextListEntry
Entri daftar untuk menyambungkan RX_CONTEXT ini ke daftar RX_CONTEXTS aktif.
MajorFunction
Fungsi utama untuk IRP yang dienkapsulasi oleh RX_CONTEXT ini.
MinorFunction
Fungsi minor untuk IRP yang dienkapulatasi oleh RX_CONTEXT ini.
PendingReturned
Jika diatur ke TRUE, ini menentukan bahwa RDBSS atau driver telah menandai IRP tertunda. Setiap rutinitas IoCompletion harus memeriksa nilai bendera ini. Jika bendera TRUE, dan jika rutinitas IoCompletion tidak akan mengembalikan STATUS_MORE_PROCESSING_REQUIRED, rutinitas harus memanggil IoMarkIrpPending untuk menyebarkan status tertunda ke driver di atasnya di tumpukan perangkat. Anggota ini mirip dengan bidang yang sama di IRP.
RDBSS selalu mengatur anggota ini ke TRUE sebelum memanggil driver pengalih mini jaringan.
PostRequest
Jika diatur ke TRUE, ini menunjukkan apakah permintaan terkait akan diposting ke utas pekerja RDBSS. Pengalih mini jaringan dapat mengatur anggota ini ke TRUE untuk menunjukkan bahwa ia ingin memposting permintaan ini ke proses sistem file (FSP).
RealDevice
Penunjuk ke objek perangkat untuk driver pengalihan mini jaringan target. RDBSS mengatur anggota ini ke objek perangkat untuk driver pengalihan mini jaringan ketika RX_CONTEXT dialokasikan dalam rutinitas RxInitializeContext . Anggota ini disalin dari anggota FileObject-DeviceObject> dari tumpukan IRP. Objek perangkat untuk pengalihan mini jaringan juga disimpan di anggota struktur RxDeviceObject .
Anggota RealDevice saat ini tidak digunakan oleh RDBSS, tetapi dapat digunakan oleh pengalih mini jaringan.
CurrentIrp
Penunjuk ke IRP asal. Anggota ini tidak boleh digunakan oleh driver pengalih mini jaringan.
CurrentIrpSp
Penunjuk ke lokasi tumpukan IRP.
pFcb
Penunjuk ke blok kontrol file (FCB) terkait untuk IRP ini.
pFobx
Penunjuk ke ekstensi objek file terkait (FOBX) untuk IRP ini.
pRelevantSrvOpen
Penunjuk ke server terkait terbuka (SRV_OPEN) untuk IRP ini.
NonPagedFcb
Penunjuk ke blok kontrol file non-halaman (FCB) terkait untuk IRP ini.
RxDeviceObject
Pointer ke RDBSS_DEVICE_OBJECT untuk driver mini-redirector jaringan target yang diperlukan untuk algoritma antrean pekerja. RDBSS mengatur anggota ini ke RDBSS_DEVICE_OBJECT untuk pengalihan mini jaringan ketika RX_CONTEXT diinisialisasi dalam rutinitas RxInitializeContext . Struktur RxDeviceObject mencakup anggota DeviceObject yang berisi objek perangkat untuk driver pengalihan mini jaringan yang sama dengan anggota RealDevice dari RX_CONTEXT.
OriginalThread
Penunjuk ke utas asli tempat permintaan dimulai.
LastExecutionThread
Penunjuk ke utas terakhir di mana beberapa pemrosesan yang terkait dengan RX_CONTEXT dilakukan jika utas diposting ke proses sistem file.
LockManagerContext
Penunjuk ke konteks manajer kunci. Anggota ini dicadangkan untuk penggunaan internal.
RdbssDbgExtension
Penunjuk ke konteks yang diberikan kepada RDBSS untuk informasi penelusuran kesalahan. Anggota ini dicadangkan untuk penggunaan internal.
ScavengerEntry
Penunjuk ke daftar item yang akan dipulihkan. Anggota ini dicadangkan untuk penggunaan internal.
SerialNumber
Nomor seri untuk struktur RX_CONTEXT ini. Setiap struktur yang diinisialisasi oleh RDBSS memiliki nomor seri yang ditetapkan ketika struktur pertama kali diinisialisasi. Nomor seri ini adalah angka yang bertambah satu per satu sebelum nilai ditetapkan. RDBSS menetapkan anggota ini ketika RX_CONTEXT diinisialisasi dalam rutinitas RxInitializeContext . RDBSS
FobxSerialNumber
Nomor seri untuk struktur FOBX terkait. Setiap struktur yang diinisialisasi oleh RDBSS memiliki nomor seri yang ditetapkan ketika struktur pertama kali diinisialisasi. Anggota ini dapat digunakan oleh pengalih mini jaringan untuk melihat apakah beberapa panggilan adalah bagian dari operasi yang lebih besar yang sama dan karenanya lebih dapat di-cache.
Flags
Bitmask bendera untuk struktur RX_CONTEXT ini.
FcbResourceAcquired
Jika diatur ke TRUE, anggota ini menentukan bahwa sumber daya FCB telah diperoleh untuk operasi ini. Sumber daya FCB adalah salah satu mekanisme penguncian yang terkait dengan operasi pada FCB.
FcbPagingIoResourceAcquired
Jika diatur ke TRUE, anggota ini menentukan bahwa sumber daya I/O halaman FCB telah diperoleh untuk operasi ini. Sumber daya I/O halaman FCB adalah salah satu mekanisme penguncian yang terkait dengan operasi I/O halaman pada FCB.
MustSucceedDescriptorNumber
Anggota awalnya mengatur ke nol dalam rutinitas RxCreateRxContext . Anggota ini tidak digunakan oleh RDBSS, tetapi dapat digunakan oleh pengalih mini jaringan.
StoredStatus
StoredStatusAlignment
InformationToReturn
IoStatusBlock
Blok status I/O digunakan oleh pengarah mini jaringan untuk mengembalikan informasi status. Anggota IoStatusBlock adalah anggota dari union yang tidak disebutkan namanya yang digunakan untuk mengembalikan informasi status.
ForceLonglongAligmentDummyField
Anggota union yang tidak disebutkan namanya digunakan untuk memaksa perataan yang tepat pada anggota MRxContext[MRX_CONTEXT_FIELD_COUNT] .
MRxContext[MRX_CONTEXT_FIELD_COUNT]
WriteOnlyOpenRetryContext
Penunjuk yang dapat digunakan untuk menyimpan beberapa status untuk pengalihan mini jaringan. Anggota ini tidak digunakan oleh RDBSS, tetapi dapat digunakan oleh driver pengalih mini jaringan untuk menunjukkan bahwa file di-cache pada handel tulis-saja.
MRxCancelRoutine
Penunjuk ke rutinitas pembatalan yang dapat diatur oleh driver pengalih mini jaringan.
ResumeRoutine
Anggota ini dicadangkan untuk penggunaan internal.
WorkQueueItem
Penunjuk ke item antrean kerja yang dapat digunakan oleh driver pengalih mini jaringan saat memproses RX_CONTEXT.
OverflowListEntry
Penunjuk ke kepala daftar operasi yang akan dirilis setelah selesai. Anggota ini dicadangkan untuk penggunaan internal.
SyncEvent
Penunjuk ke PERISTIWA kernel yang dapat digunakan oleh driver pengalih mini jaringan untuk menunggu saat memproses RX_CONTEXT.
BlockedOperations
Penunjuk ke kepala daftar operasi yang diblokir yang akan dirilis setelah selesai. Anggota ini dicadangkan untuk penggunaan internal.
BlockedOpsMutex
Penunjuk ke mutex yang mengontrol serialisasi operasi yang diblokir. Anggota ini dicadangkan untuk penggunaan internal.
RxContextSerializationQLinks
Penunjuk ke entri daftar yang digunakan untuk menserialisasikan operasi pipa berdasarkan per-file-object. Anggota ini dicadangkan untuk penggunaan internal.
Info
Anggota struktur union yang tidak disebutkan namanya yang digunakan untuk rutinitas MRxQueryDirectory, MRxQueryFileInfo, MRxQueryVolumeInfo, MRxSetFileInfo, MRxSetFileInfoAtCleanup, dan MRxSetVolumeInfo . RDBSS meneruskan informasi di anggota struktur Info ke pengalih mini jaringan dan pengalih mini jaringan mengembalikan informasi ke RDBSS di anggota struktur Info .
Info.FsInformationClass
Anggota union yang tidak disebutkan namanya yang digunakan oleh RDBSS untuk meneruskan jenis FS_INFORMATION_CLASS yang diminta ke driver mini-redirector jaringan. RDBSS meneruskan informasi di anggota FsInformationClass saat memanggil **MrxQueryVolumeInfo **dan MrxSetVolumeInfo.
Info.FileInformationClass
Anggota union yang tidak disebutkan namanya yang digunakan oleh RDBSS untuk menunjukkan jenis permintaan FILE_INFORMATION_CLASS yang dikirim ke driver pengalih mini jaringan. RDBSS meneruskan informasi di anggota FileInformationClass saat memanggil MrxQueryDirectory, MrxQueryFileInfo, dan MrxSetFileInfo.
Info.Buffer
Buffer yang digunakan untuk meneruskan data dari RDBSS ke driver pengalihan mini jaringan dan menerima respons dari driver pengalihan mini jaringan oleh RDBSS. Anggota Buffer digunakan dalam rutinitas MrxQueryDirectory, MrxQueryFileInfo, MrxQueryVolumeInfo, MrxSetFileInfo, MRxSetFileInfoAtCleanup, dan MrxSetVolumeInfo .
Info.Length
Anggota union yang tidak disebutkan namanya digunakan untuk meneruskan panjang anggota Buffer dari RDBSS ke driver mini-redirector jaringan. Anggota Length digunakan dalam rutinitas MrxQueryDirectory, MrxQueryFileInfo, MrxQueryVolumeInfo, MrxSetFileInfo, MRxSetFileInfoAtCleanup, dan MrxSetVolumeInfo .
Info.LengthRemaining
Anggota union yang tidak disebutkan namanya digunakan untuk meneruskan panjang informasi yang dikembalikan di anggota Buffer dari driver pengalihan mini jaringan ke RDBSS. Anggota LengthRemaining digunakan dalam rutinitas MrxQueryDirectory, MrxQueryFileInfo, MrxQueryVolumeInfo, MrxSetFileInfo, MRxSetFileInfoAtCleanup, dan MrxSetVolumeInfo .
Info.ReplaceIfExists
Nilai Boolean yang menunjukkan apakah file yang ada harus diganti selama operasi penggantian nama. Anggota ReplaceIfExists digunakan dalam rutinitas MrxSetFileInfo .
Info.AdvanceOnly
Anggota ini dicadangkan untuk penggunaan internal.
PrefixClaim
Anggota struktur dari union yang tidak disebutkan namanya yang digunakan untuk permintaan resolusi awalan yang dikirim dari Multiple UNC Provider (MUP). Hasil klaim awalan dari permintaan IRP_MJ_DEVICE_CONTROL dari MUP ke RDBSS untuk IOCTL_REDIR_QUERY_PATH atau IOCTL_REDIR_QUERY_PATH_EX. RDBSS meneruskan informasi dalam struktur PrefixClaim ke pengalihan mini jaringan dan pengalih mini jaringan mengembalikan informasi ke RDBSS dalam struktur PrefixClaim .
PrefixClaim.SuppliedPathName
Untai (karakter) Unicode yang dihentikan non-NULL yang menentukan jalur UNC untuk melakukan resolusi awalan.
PrefixClaim.NetRootType
Jenis NET_ROOT yang diminta. Anggota ini saat ini tidak digunakan. RDBSS menyimpulkan jenis NET_ROOT dari anggota SuppliedPathName .
PrefixClaim.pSecurityContext
Penunjuk ke konteks keamanan yang diteruskan dari permintaan dari MUP.
Anggota ini saat ini tidak digunakan. Konteks keamanan diteruskan dalam anggota Create.NtCreateParameters.SecurityContext dari RX_CONTEXT, bukan di anggota ini.
Create
Anggota struktur dari union yang tidak disebutkan namanya yang digunakan untuk menangani permintaan IRP_MJ_CREATE . Anggota ini digunakan untuk menangani permintaan buka file yang mengakibatkan panggilan ke rutinitas MRxCreate . Anggota ini juga digunakan untuk permintaan resolusi awalan. RDBSS meneruskan informasi di Buat anggota struktur ke pengalih mini jaringan dan pengalih mini jaringan mengembalikan informasi ke RDBSS di anggota Buat struktur.
Create.NtCreateParameters
Parameter buat yang diteruskan ke rutinitas NtCreatefile mode pengguna. RDBSS menetapkan anggota struktur NtCreateParameters berdasarkan parameter.Buat anggota IRP.
Create.ReturnedCreateInformation
Nilai yang ditetapkan oleh pengalih mini jaringan setelah menyelesaikan panggilan MRxCreate .
Create.CanonicalNameBuffer
Penunjuk ke string Unicode yang mewakili nama file fisik untuk dibuka jika nama kanonis lebih besar dari buffer yang tersedia.
Create.NetNamePrefixEntry
Penunjuk ke entri awalan tabel NetName. Anggota ini dicadangkan untuk penggunaan internal.
Create.pSrvCall
Penunjuk ke struktur SRV_CALL terkait.
Create.pNetRoot
Penunjuk ke struktur NET_ROOT terkait.
Create.pVNetRoot
Penunjuk ke struktur V_NET_ROOT terkait.
Create.EaBuffer
Penunjuk ke buffer atribut yang diperluas. Anggota ini bersifat opsional.
Create.EaLength
Panjang buffer atribut yang diperluas, EaBuffer.
Create.SdLength
Panjang deskriptor keamanan. RDBSS menetapkan ini berdasarkan nilai anggota Parameters.Create.SecurityContext dari IRP. Jika anggota SdLength bukan nol, deskriptor keamanan diteruskan di anggota Info.Buffer ke pengalihan mini jaringan.
Create.PipeType
Jenis pipa. Anggota ini dicadangkan untuk penggunaan internal.
Create.PipeReadMode
Mode baca untuk pipa. Anggota ini dicadangkan untuk penggunaan internal.
Create.PipeCompletionMode
Mode penyelesaian untuk pipa. Anggota ini dicadangkan untuk penggunaan internal.
Create.Flags
Bendera buat
Create.Type
Jenis struktur NET_ROOT terkait.
Create.RdrFlags
Create.FcbAcquired
Anggota ini dicadangkan untuk penggunaan internal.
Create.TryForScavengingOnSharingViolation
Anggota ini dicadangkan untuk penggunaan internal.
Create.ScavengingAlreadyTried
Anggota ini dicadangkan untuk penggunaan internal.
Create.ThisIsATreeConnectOpen
Nilai Boolean yang menunjukkan apakah panggilan ini adalah permintaan buka sambungkan pohon dengan opsi FILE_CREATE_TREE_CONNECTION diatur dalam anggota IrpSp-Parameters.Create.Options>.
Create.TreeConnectOpenDeferred
Nilai Boolean yang menunjukkan pengalih mini jaringan dapat memilih untuk menungguhkan permintaan buka sambungkan pohon.
Create.TransportName
String Unicode yang mewakili nama transportasi. Anggota ini diatur dari parameter terbuka tree connect.
Create.UserName
String Unicode yang mewakili nama pengguna yang bertanggung jawab atas permintaan tersebut. Anggota ini diatur dari parameter terbuka tree connect.
Create.Password
String Unicode yang berisi kata sandi untuk Nama Pengguna ini yang digunakan untuk autentikasi dan otorisasi. Anggota ini diatur dari parameter terbuka tree connect.
Create.UserDomainName
String Unicode yang berisi nama domain untuk UserName ini.
QueryDirectory
Anggota struktur dari union yang tidak disebutkan namanya yang digunakan untuk menangani permintaan IRP_MJ_DIRECTORY_CONTROL . Anggota ini digunakan untuk menangani permintaan direktori kueri yang mengakibatkan panggilan ke rutinitas MrxQueryDirectory . RDBSS meneruskan informasi di anggota struktur QueryDirectory ke pengalih mini jaringan.
QueryDirectory.FileIndex
Indeks entri untuk mulai memindai direktori jika anggota IndexSpecified diatur ke TRUE. Parameter ini diatur ke anggota IrpSp-Parameters.QueryDirectory.FileIndex>.
QueryDirectory.RestartScan
Nilai Boolean saat diatur ke TRUE menunjukkan bahwa pemindaian akan dimulai pada entri pertama di direktori. Ketika nilai ini diatur ke FALSE, pemindaian melanjutkan dari panggilan sebelumnya. Parameter ini harus diatur ke TRUE saat memanggil untuk pertama kalinya. Parameter ini diatur ke TRUE jika IrpSp-Flags> memiliki bit SL_RESTART_SCAN aktif.
QueryDirectory.ReturnSingleEntry
Nilai Boolean yang diatur ke TRUE menunjukkan bahwa hanya satu entri yang harus dikembalikan. Jika parameter ini TRUE, MrxQueryDirectory hanya boleh mengembalikan entri pertama yang ditemukan. Parameter ini diatur ke TRUE jika IrpSp-Flags> memiliki bit SL_RETURN_SINGLE_ENTRY aktif.
QueryDirectory.IndexSpecified
Nilai Boolean ketika diatur ke TRUE menunjukkan untuk memulai pemindaian pada entri di direktori yang indeksnya diberikan oleh anggota FileIndex . Parameter ini diatur ke TRUE jika IrpSp-Flags> memiliki bit SL_INDEX_SPECIFIED aktif.
QueryDirectory.InitialQuery
Nilai Boolean yang diatur ke TRUE saat kueri bukan kueri wild card (".", misalnya). Anggota ini diatur ke TRUE jika anggota UnicodeQueryTemplate.Buffer dari FOBX terkait adalah NULL dan anggota Bendera FOBX tidak memiliki bit FOBX_FLAG_MATCH_ALL aktif. Untuk kueri wild card (".", misalnya), RDBSS akan mengatur anggota UnicodeQueryTemplate.Buffer dari FOBX terkait ke kueri wild card yang diteruskan.
NotifyChangeDirectory
Anggota struktur dari union yang tidak disebutkan namanya yang digunakan untuk menangani permintaan IRP_MJ_DIRECTORY_CONTROL dengan fungsi kecil IRP_MN_NOTIFY_CHANGE_DIRECTORY. Anggota ini digunakan untuk menangani permintaan perubahan direktori yang mengakibatkan panggilan ke rutinitas MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY ]. RDBSS meneruskan informasi di anggota struktur NotifyChangeDirectory dan struktur pLowIoContext-ParamsFor.NotifyChangeDirectory> ke pengalih mini jaringan.
NotifyChangeDirectory.pVNetRoot
Penunjuk ke struktur V_NET_ROOT yang terkait dengan direktori. Parameter ini diatur ke anggota IrpSp-FileObject-FsContext>> atau anggota IrpSp-FileObject-FsContext2>> tergantung pada jenis node.
QueryEa
Anggota struktur dari union yang tidak disebutkan namanya yang digunakan untuk menangani permintaan IRP_MJ_QUERY_EA . Anggota ini digunakan untuk menangani permintaan kueri atribut yang diperluas yang menghasilkan panggilan ke rutinitas MRxQueryEaInfo . RDBSS meneruskan informasi di anggota struktur QueryEa ke pengalihan mini jaringan.
QueryEa.UserEaList
Penunjuk ke buffer input yang disediakan penelepon yang berisi struktur FILE_GET_EA_INFORMATION yang menentukan atribut yang diperluas untuk dikueri. Parameter ini diatur ke IrpSp-Parameters.QueryEa.EaList>.
QueryEa.UserEaListLength
Panjangnya, dalam byte, dari buffer yang ditujukkan oleh anggota UserEaList . Parameter ini diatur ke IrpSp-Parameters.QueryEa.EaListLength>.
QueryEa.UserEaIndex
Indeks entri untuk mulai memindai daftar atribut yang diperluas. Parameter ini harus diabaikan jika anggota IndexSpecified tidak diatur ke TRUE atau jika anggota QueryEaList menunjuk ke daftar yang tidak kosong. Parameter ini diatur ke IrpSp-Parameters.QueryEa.EaIndex>.
QueryEa.RestartScan
Nilai Boolean saat diatur ke TRUE menunjukkan bahwa kueri akan dimulai pada entri atribut pertama yang diperluas. Ketika nilai ini diatur ke FALSE, pemindaian melanjutkan dari panggilan sebelumnya. Parameter ini harus diatur ke TRUE saat memanggil untuk pertama kalinya. Parameter ini diatur ke TRUE jika IrpSp-Flags> memiliki bit SL_RESTART_SCAN aktif.
QueryEa.ReturnSingleEntry
Nilai Boolean saat diatur ke TRUE menunjukkan bahwa hanya satu entri yang harus dikembalikan. Jika parameter ini TRUE, MrxQueryEaInfo hanya boleh mengembalikan entri pertama yang ditemukan. Parameter ini diatur ke TRUE jika IrpSp-Flags> memiliki bit SL_RETURN_SINGLE_ENTRY aktif.
QueryEa.IndexSpecified
Nilai Boolean saat diatur ke TRUE menunjukkan untuk memulai pemindaian pada entri dalam atribut yang diperluas yang indeksnya diberikan oleh anggota UserEaIndex . Parameter ini diatur ke TRUE jika IrpSp-Flags> memiliki bit SL_INDEX_SPECIFIED aktif.
QuerySecurity
Anggota struktur dari union yang tidak disebutkan namanya yang digunakan untuk menangani permintaan IRP_MJ_QUERY_SECURITY . Anggota ini digunakan untuk menangani permintaan keamanan kueri yang mengakibatkan panggilan ke rutinitas MRxQuerySdInfo . RDBSS meneruskan informasi dalam anggota struktur QuerySecurity ke pengalihan mini jaringan.
QuerySecurity.SecurityInformation
Penunjuk ke buffer input yang disediakan penelepon yang berisi struktur SECURITY_INFORMATION yang menentukan operasi yang akan dikueri. Parameter ini diatur ke IrpSp-Parameters.QuerySecurity.SecurityInformation>.
QuerySecurity.Length
Panjangnya, dalam byte, dari buffer yang ditujukkan oleh anggota SecurityInformation . Parameter ini diatur ke IrpSp-Parameters.QuerySecurity.Length>.
SetSecurity
Anggota struktur dari union yang tidak disebutkan namanya yang digunakan untuk menangani permintaan IRP_MJ_SET_SECURITY . Anggota ini digunakan untuk menangani permintaan keamanan kueri yang mengakibatkan panggilan ke rutinitas MRxSetSdInfo . RDBSS meneruskan informasi di anggota struktur SetSecurity ke pengalih mini jaringan.
SetSecurity.SecurityInformation
Penunjuk ke buffer input yang disediakan penelepon yang berisi struktur SECURITY_INFORMATION yang menentukan informasi keamanan mana yang akan diatur dalam deskriptor keamanan. Parameter ini diatur ke IrpSp-Parameters.SetSecurity.SecurityInformation>.
SetSecurity.SecurityDescriptor
Penunjuk ke struktur SECURITY_DESCRIPTOR yang berisi nilai informasi keamanan yang akan ditetapkan ke objek. Parameter ini diatur ke IrpSp-Parameters.SetSecurity.SecurityDescriptor>.
QueryQuota
Anggota struktur dari union yang tidak disebutkan namanya yang digunakan untuk menangani permintaan IRP_MJ_QUERY_QUOTA . Anggota ini digunakan untuk menangani permintaan keamanan kueri yang mengakibatkan panggilan ke rutinitas MRxQueryQuotaInfo . RDBSS meneruskan informasi di anggota struktur QueryQuota ke pengalihan mini jaringan.
QueryQuota.Length
Panjangnya, dalam byte, dari buffer yang ditujukkan oleh anggota StartSid . Parameter ini diatur ke IrpSp-Parameters.QueryQuota.Length>.
QueryQuota.StartSid
Penunjuk opsional ke SID yang menunjukkan bahwa informasi yang dikembalikan adalah memulai dengan entri selain entri pertama. Parameter ini diabaikan jika anggota SidList ditentukan. Parameter ini diatur ke IrpSp-Parameters.QueryQuota.StartSid>.
QueryQuota.SidList
Penunjuk opsional ke daftar SID yang informasi kuotanya akan dikembalikan. Setiap entri dalam daftar adalah struktur FILE_GET_QUOTA_INFORMATION. Parameter ini diatur ke IrpSp-Parameters.QueryQuota.SidList>.
QueryQuota.SidListLength
Panjangnya, dalam byte, dari daftar SID di anggota SidList , jika ditentukan. Parameter ini diatur ke IrpSp-Parameters.QueryQuota.SidListLength>.
QueryQuota.RestartScan
Nilai Boolean saat diatur ke TRUE menunjukkan bahwa kueri akan dimulai pada entri pertama. Ketika nilai ini diatur ke FALSE, pemindaian melanjutkan dari panggilan sebelumnya. Parameter ini harus diatur ke TRUE saat memanggil untuk pertama kalinya. Parameter ini diatur ke TRUE jika IrpSp-Flags> memiliki bit SL_RESTART_SCAN aktif.
QueryQuota.ReturnSingleEntry
Nilai Boolean saat diatur ke TRUE menunjukkan bahwa hanya satu entri yang harus dikembalikan. Jika parameter ini TRUE, MrxQueryQuotaInfo hanya boleh mengembalikan entri pertama yang ditemukan. Parameter ini diatur ke TRUE jika IrpSp-Flags> memiliki bit SL_RETURN_SINGLE_ENTRY aktif.
QueryQuota.IndexSpecified
Nilai Boolean ketika diatur ke TRUE menunjukkan untuk memulai pemindaian pada entri dalam daftar yang indeksnya diberikan oleh anggota StartSid . Parameter ini diatur ke TRUE jika IrpSp-Flags> memiliki bit SL_INDEX_SPECIFIED aktif.
SetQuota
Anggota struktur dari union yang tidak disebutkan namanya yang digunakan untuk menangani permintaan IRP_MJ_SET_QUOTA . Struktur ini saat ini tidak digunakan oleh RDBSS.
SetQuota.Length
Anggota struktur SetQuota yang tidak digunakan.
DosVolumeFunction
Anggota struktur dari union yang tidak disebutkan namanya. Struktur ini saat ini tidak digunakan oleh RDBSS.
DosVolumeFunction.VNetRoot
Anggota struktur DosVolumeFunction yang tidak digunakan.
DosVolumeFunction.SrvCall
Anggota struktur DosVolumeFunction yang tidak digunakan.
DosVolumeFunction.NetRoot
Anggota struktur DosVolumeFunction yang tidak digunakan.
FlagsForLowIo
LowIoContext
AlsoCanonicalNameBuffer
LoudCompletionString
Anggota struktur RX_CONTEXT yang tidak digunakan.
AcquireReleaseFcbTrackerX
TrackerHistoryPointer
TrackerHistory[RDBSS_TRACKER_HISTORY_SIZE]
ShadowCritOwner
StoredStatus
Anggota union yang tidak disebutkan namanya yang digunakan untuk mengembalikan informasi status oleh driver pengalih mini jaringan untuk operasi I/O rendah. RDBSS juga menetapkan nilai ini berdasarkan status yang dikembalikan oleh rutinitas MRxQueryFileInfo ketika operasi kueri file tidak dipahami oleh RDBSS.
StoredStatusAlignment
Anggota union yang tidak disebutkan namanya digunakan untuk memaksa perataan yang tepat pada anggota StoredStatus .
InformationToReturn
Anggota union yang tidak disebutkan namanya yang digunakan untuk mengembalikan informasi status oleh driver pengalih mini jaringan untuk beberapa operasi I/O rendah (baca, tulis, FSCTL, dll.) dan MrxQueryXXX .
Jenis node unik yang digunakan untuk struktur RX_CONTEXT. Semua jenis struktur utama (RX_CONTEXT, SRV_CALL, NET_ROOT, V_NET_ROOT, SRV_OPEN, FCB, dan FOBX, misalnya) yang digunakan oleh RDBSS memiliki kode jenis node dua byte unik yang ditentukan dalam file nodetype.h yang dapat digunakan untuk penelusuran kesalahan. RDBSS mengatur anggota ini ke RDBSS_NTC_RX_CONTEXT ketika RX_CONTEXT diinisialisasi dalam rutinitas RxInitializeContext . Jika driver pengalih mini jaringan menginisialisasi struktur RX_CONTEXT menggunakan beberapa metode lain, anggota ini harus diatur.
RDBSS mendefinisikan anggota ini sebagai bagian dari header standar untuk semua struktur yang digunakan oleh RDBSS.
FlagsForLowIo
Serangkaian opsi yang diatur oleh RDBSS dan diteruskan ke operasi I/O rendah yang dikirim ke pengalihan mini jaringan. FlagsForLowIo adalah anggota struktur yang tidak disebutkan namanya yang digunakan untuk permintaan I/O rendah ke pengalihan mini jaringan.
LowIoContext
Penunjuk ke struktur LOWIO_CONTEXT diteruskan ke pengalihan mini jaringan. LowIoContext adalah anggota struktur yang tidak disebutkan namanya yang digunakan untuk permintaan I/O rendah yang dikirim ke pengalihan mini jaringan.
Keterangan
Struktur RX_CONTEXT adalah salah satu struktur data mendasar yang digunakan oleh RDBSS dan pengalihan mini jaringan untuk mengelola paket permintaan I/O (IRP). Struktur data RX_CONTEXT merangkum IRP untuk digunakan oleh RDBSS, pengalih mini jaringan, dan sistem file. Struktur RX_CONTEXT mencakup pointer ke satu IRP dan semua konteks yang diperlukan untuk memproses IRP.
Struktur RX_CONTEXT terkadang disebut sebagai Konteks IRP atau RxContext dalam file header Window Driver Kit (WDK) atau IFS Kit dan sumber daya lain yang digunakan untuk mengembangkan driver mini-redirector jaringan.
RX_CONTEXT adalah struktur data tempat informasi tambahan yang disediakan oleh berbagai pengalihan mini jaringan terpasang. RX_CONTEXT mencakup bidang untuk mengalokasikan ukuran setiap struktur RX_CONTEXT dengan jumlah yang telah ditentukan sebelumnya untuk setiap pengalihan mini jaringan, yang kemudian dicadangkan untuk digunakan oleh pengalih mini. Pendekatan ini terdiri dari mengalokasikan area yang telah ditentukan sebelumnya, yang sama untuk semua pengalihan mini jaringan sebagai bagian dari setiap RX_CONTEXT. Ini adalah area yang tidak diformat di atas struktur apa pun yang diinginkan dapat diberlakukan oleh berbagai pengalihan mini jaringan. Pengembang driver pengalih mini jaringan harus mencoba dan menentukan konteks privat terkait agar sesuai dengan area yang telah ditentukan sebelumnya yang ditentukan dalam struktur data RX_CONTEXT. Driver pengalih mini jaringan yang melanggar aturan ini akan dikenakan penalti performa yang signifikan.
Banyak rutinitas dan rutinitas RDBSS yang diekspor oleh pengalih mini jaringan merujuk ke struktur RX_CONTEXT baik di utas yang memulai atau di beberapa utas lain yang digunakan oleh rutinitas. Dengan demikian, struktur RX_CONTEXT yang dialokasikan adalah referensi yang dihitung untuk mengelola penggunaannya untuk operasi asinkron. Ketika jumlah referensi masuk ke nol, struktur RX_CONTEXT yang dialokasikan dapat diselesaikan dan dirilis pada operasi dereferensi terakhir.
RDBSS menyediakan sejumlah rutinitas yang digunakan untuk memanipulasi RX_CONTEXT dan IRP terkait. Rutinitas ini digunakan untuk mengalokasikan, menginisialisasi, dan menghapus RX_CONTEXT. Rutinitas ini juga digunakan untuk menyelesaikan IRP yang terkait dengan RX_CONTEXT dan menyiapkan rutinitas pembatalan untuk RX_CONTEXT.
Persyaratan
Persyaratan | Nilai |
---|---|
Header | rxcontx.h (termasuk Rx.h, Rxcontx.h) |