共用方式為


RxDriverEntry 函式 (rxprocs.h)

RxDriverEntry 是由整合型網路迷你重新導向器驅動程式從其 DriverEntry 例程呼叫,以初始化 RDBSS 靜態庫。

對於非整合型驅動程式,此初始化例程相當於RDBSS.SYS設備驅動器的 DriverEntry 例程。

語法

NTSTATUS RxDriverEntry(
  [in] IN PDRIVER_OBJECT  DriverObject,
  [in] IN PUNICODE_STRING RegistryPath
);

參數

[in] DriverObject

網路迷你重新導向器驅動程式之驅動程式物件的指標。 每個驅動程式都會在參數中接收其驅動程序物件的指標,指向其 DriverEntry 例程。 此驅動程式物件將用來建立網路迷你重新導向器驅動程式的裝置物件。

[in] RegistryPath

Unicode 字串的指標,其中包含驅動程序參數和其他組態數據的儲存位置登錄路徑。 此登錄路徑通常位於位於 HKLM\System\CurrentControlSet\Services 機碼下的特定網路迷你重新導向器的服務專案下。

傳回值

RxDriverEntry 在成功時傳回STATUS_SUCCESS,或在失敗時傳回下列其中一個錯誤值:

傳回碼 描述
RXINIT_START 已啟動 RDBSS 的初始化,但發生錯誤。 這個錯誤碼是值為 5 的內部 RDBSS 列舉。

言論

整合型網路迷你重新導向器驅動程式,以靜態方式與 RDBSSLIB 連結。LIB 必須從其 DriverEntry 例程呼叫 RxDriverEntry,以初始化與驅動程序連結的 RDBSSLIB 連結庫複本。 RxDriverEntry 必須由整合型網路迷你重新導向器驅動程式呼叫,才能呼叫任何其他 RDBSS 例程。

在呼叫 RxDriverEntry,以在其 DriverEntry 例程附近初始化 RDBSS 連結庫的複本之後,網路迷你重新導向器驅動程式通常會在其 DriverEntry 例程中呼叫 RxRegisterMinirdr,以向 RDBSS 註冊。

如果 RxDriverEntry 呼叫成功,則會初始化內部全域 RDBBS 數據結構。 系統會建立各種微調鎖定和 Mutex 來保護這些數據結構。 其中一個數據結構是RDBSS_DATA結構,這是 RDBSS 記憶體數據結構中的最上層結構。 DriverObject 參數會儲存在RDBSS_DATA結構的 DriverObject 成員中。 RxDriverEntry 也會在啟用時初始化追蹤、記錄和偵錯(例如已核取的組建)。

RxDriverEntry 也會嘗試開啟傳遞為 RegistryPath 參數的登錄路徑,將此對象視為不區分大小寫的字串。 如果成功開啟此登錄機碼,則會嘗試開啟這個專案下方的參數登錄機碼。

RxDriverEntry 也會嘗試開啟 HKLM\System\CurrentControlSet\Services\LanmanWorkStation\Parameters 登錄機碼。

如果可以開啟此金鑰,則會根據操作系統的版本,嘗試讀取此機碼底下的一些值。

在 Windows XP 和更新版本上,RxDriverEntry 會嘗試在 LanmanWorkStation\Parameters 機碼下開啟 DisableByteRangeLockingOnReadOnlyFiles 值。

此值是 DWORD,會被視為布爾值,並儲存為 DisableByteRangeLockingOnReadOnlyFiles 的布爾值,這是 RDBSS 變數,用於處理唯讀檔案上的位元組範圍鎖定。 此變數會影響 RDBSS 如何處理 FCB 上的網路迷你重新導向器處理新的SRV_OPEN要求,並決定是否可以在屬性相容時折疊到現有的SRV_OPEN。 如果網路迷你重新導向器驅動程式想要變更此行為,驅動程式應該會在傳回 RxDriverEntry 例程之後,將 DisableByteRangeLockingOnReadOnlyFiles 的值設定為適當的值。 RDBSSLIB。LIB 靜態庫會將 DisableByteRangeLockingOnReadOnlyFiles 公開為外部變數。

在 Windows 2000 和 Windows XP 上,RxDriverEntry 會嘗試在 LanmanWorkStation\Parameters 機碼下開啟 ReadAheadGranularity 值。

此值是 DWORD,會被視為數位,並儲存為快取管理員預先使用之讀取之PAGE_SIZE頁數上內部 RDBSS 選項的值。 任何大於16的登錄值都會被視為此值限製為16(目前允許的最大值)。 此內部選項會儲存為處理器上PAGE_SIZE的頁數(例如,4K PAGE_SIZE的最多0x10000或 64K 次)。 在 Windows 2000 和 Windows XP 上,RDBSS 會呼叫 CcSetReadAheadGranularity,並針對各種建立、讀取和寫入作業使用此選項。 如果網路迷你重新導向器驅動程式想要變更此行為,驅動程式應該會在傳回 RxDriverEntry 例程之後,將 ReadAheadGranularity 的值設定為適當的值。 RDBSSLIB。LIB 靜態庫會將 ReadAheadGranularity 公開為外部變數。

在 X86 系統上,64K 是記憶體管理員發出分頁寫入時所發出的最大寫入(快取排清會透過記憶體管理員分頁寫入)。 針對遠端檔案系統,64K 不是最佳選擇。 單一 TDI 網路要求中可傳輸的數據最多會小於 64K,因為通訊協定資訊的額外負荷。

在 Windows Server 2003 上,不會公開設定 ReadAheadGranularity 的登錄值,而 RDBSS 預設為 32K(8 4K PAGE_SIZE 頁)。 這是本機檔系統採用的相同預設值。

RxDriverEntry 會藉由呼叫 PsGetCurrent Process 來擷取核心進程的指標,並將此值儲存在內部 RDBSS 數據結構中。 此核心進程有時稱為檔系統進程。

RxDriverEntry 然後將指標複製到驅動程式分派數據表中所有專案的 RxFsdDispatch 例程。 因此,如果整合型網路迷你重新導向器驅動程式需要在 RDBSS 連結庫之前接收特定的 IRP 進行特殊處理,則必須先儲存其原始驅動程式分派數據表的複本,再呼叫 RxDriverEntry,並在呼叫 RxDriverEntry 之後還原的任何例程指標, 傳回。 請注意,除非將選項設定為防止此行為 ,否則呼叫 RxRegisterMinirdr 時,RDBSS 也會將 RxFsdDispatch 複製到所有驅動程式分派數據表專案。

針對非整合型網路迷你重新導向器驅動程式(Microsoft SMB 重新導向器),RDBSS.SYS裝置驅動程式會在載入時,於內部呼叫 RxDriverEntry時,以自己的 DriverEntry 例程初始化。 在整合型驅動程式上,RxDriverEntry 例程會從 RDBSSLIB 導出。LIB 靜態庫,且必須由網路迷你重新導向器明確呼叫。

要求

要求 價值
目標平臺 桌面
標頭 rxprocs.h (包括 Rxprocs.h)
IRQL <= APC_LEVEL

另請參閱

CcSetReadAheadGranularity

PsGetCurrentProcess

RxRegisterMinirdr

RxSetDomainForMailslotBroadcast

RxStartMinirdr

RxStopMinirdr

RxUnregisterMinirdr

RxpUnregisterMinirdr

__RxFillAndInstallFastIoDispatch