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)

Lihat juga

FILE_GET_EA_INFORMATION

IOCTL_REDIR_QUERY_PATH

IOCTL_REDIR_QUERY_PATH_EX

IRP_MJ_CREATE

IRP_MJ_DEVICE_CONTROL

IRP_MJ_DIRECTORY_CONTROL

IRP_MJ_QUERY_EA

IRP_MJ_QUERY_QUOTA

IRP_MJ_QUERY_SECURITY

IRP_MJ_SET_QUOTA

IRP_MJ_SET_SECURITY

IoCompletion

IoMarkIrpPending

MRxCreate

MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY]

MRxQueryDirectory

MRxQueryEaInfo

MRxQueryFileInfo

MRxQueryQuotaInfo

MRxQuerySdInfo

MRxQueryVolumeInfo

MRxSetFileInfo

MRxSetFileInfoAtCleanup

MRxSetSdInfo

MRxSetVolumeInfo

RxCreateRxContext

RxInitializeContext

RxStartMinirdr