sys: silo: FspSiloPostInitialize

This commit is contained in:
Bill Zissimopoulos 2022-09-27 19:55:08 +01:00
parent 6c6dd8abcc
commit a3765d6360
4 changed files with 28 additions and 6 deletions

View File

@ -150,6 +150,10 @@ NTSTATUS DriverEntry(
goto exit;
InitDoneDevices = TRUE;
Result = FspSiloPostInitialize();
if (!NT_SUCCESS(Result))
goto exit;
Result = STATUS_SUCCESS;
exit:

View File

@ -754,6 +754,7 @@ NTSTATUS FspSiloGetGlobals(FSP_SILO_GLOBALS **PGlobals);
VOID FspSiloDereferenceGlobals(FSP_SILO_GLOBALS *Globals);
VOID FspSiloGetContainerId(GUID *ContainerId);
NTSTATUS FspSiloInitialize(FSP_SILO_INIT_CALLBACK Init, FSP_SILO_FINI_CALLBACK Fini);
NTSTATUS FspSiloPostInitialize(VOID);
VOID FspSiloFinalize(VOID);
/* process buffers */

View File

@ -22,9 +22,11 @@
#include <sys/driver.h>
NTSTATUS FspSiloInitialize(FSP_SILO_INIT_CALLBACK Init, FSP_SILO_FINI_CALLBACK Fini);
NTSTATUS FspSiloPostInitialize(VOID);
#ifdef ALLOC_PRAGMA
#pragma alloc_text(INIT, FspSiloInitialize)
#pragma alloc_text(INIT, FspSiloPostInitialize)
#endif
typedef PEJOB FSP_PESILO;
@ -293,15 +295,11 @@ NTSTATUS FspSiloInitialize(FSP_SILO_INIT_CALLBACK Init, FSP_SILO_FINI_CALLBACK F
if (!NT_SUCCESS(Result))
goto exit;
Result = CALL(PsStartSiloMonitor)(Monitor);
if (!NT_SUCCESS(Result))
goto exit;
FspSiloMonitor = Monitor;
FspSiloInitCallback = Init;
FspSiloFiniCallback = Fini;
FspSiloInitDone = TRUE;
Result = STATUS_SUCCESS;
exit:
@ -316,10 +314,23 @@ NTSTATUS FspSiloInitialize(FSP_SILO_INIT_CALLBACK Init, FSP_SILO_FINI_CALLBACK F
return Result;
}
NTSTATUS FspSiloPostInitialize(VOID)
{
if (!FspSiloInitDone)
return STATUS_SUCCESS;
return CALL(PsStartSiloMonitor)(FspSiloMonitor);
}
VOID FspSiloFinalize(VOID)
{
if (!FspSiloInitDone)
return;
CALL(PsUnregisterSiloMonitor)(FspSiloMonitor);
FspSiloMonitor = 0;
FspSiloInitCallback = 0;
FspSiloFiniCallback = 0;
FspSiloInitDone = FALSE;
}

View File

@ -7,7 +7,8 @@ set Config=Debug
set Suffix=x64
set Deploy=C:\Deploy\winfsp
set Target=Win10DBG
set Chkpnt=winfsp
set Chkpnt=docker+winfsp
set CImage=mcr.microsoft.com/windows/servercore:1909
if not X%1==X set Target=%1
if not X%2==X set Chkpnt=%2
@ -15,6 +16,10 @@ if not X%2==X set Chkpnt=%2
echo regsvr32 /s winfsp-x64.dll
) > %~dp0..\build\VStudio\build\%Config%\deploy-setup.bat
(
echo docker run -it --rm --isolation=process -v%Deploy%:%Deploy%:RO %CImage% cmd.exe
) > %~dp0..\build\VStudio\build\%Config%\docker-run.bat
set Files=
for %%f in (
%~dp0..\build\VStudio\build\%Config%\
@ -23,6 +28,7 @@ for %%f in (
winfsp-tests-%Suffix%.exe
memfs-%Suffix%.exe
deploy-setup.bat
docker-run.bat
) do (
set File=%%~f
if [!File:~-1!] == [\] (