mirror of
https://github.com/reactos/reactos.git
synced 2024-08-28 22:28:36 +00:00
[KERNEL32]
Enable the BaseVDM functions, even though they're not yet implemented in basesrv. Implement ExitVDM. svn path=/branches/ntvdm/; revision=61904
This commit is contained in:
parent
d028bd7690
commit
5a012c39f1
|
@ -89,10 +89,9 @@ BaseUpdateVDMEntry(IN ULONG UpdateIndex,
|
|||
IN ULONG IndexInfo,
|
||||
IN ULONG BinaryType)
|
||||
{
|
||||
#if 0 // Unimplemented in BASESRV
|
||||
NTSTATUS Status;
|
||||
BASE_API_MESSAGE ApiMessage;
|
||||
PBASE_UPDATE_VDM_ENTRY UpdateVdmEntry = &ApiMessage.Data.UpdateVdmEntry;
|
||||
PBASE_UPDATE_VDM_ENTRY UpdateVdmEntry = &ApiMessage.Data.UpdateVDMEntryRequest;
|
||||
|
||||
/* Check what update is being sent */
|
||||
switch (UpdateIndex)
|
||||
|
@ -155,7 +154,7 @@ BaseUpdateVDMEntry(IN ULONG UpdateIndex,
|
|||
/* Return it to the caller */
|
||||
*WaitHandle = UpdateVdmEntry->WaitObjectForParent;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* We made it */
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -165,11 +164,10 @@ WINAPI
|
|||
BaseCheckForVDM(IN HANDLE ProcessHandle,
|
||||
OUT LPDWORD ExitCode)
|
||||
{
|
||||
#if 0 // Unimplemented in BASESRV
|
||||
NTSTATUS Status;
|
||||
EVENT_BASIC_INFORMATION EventBasicInfo;
|
||||
BASE_API_MESSAGE ApiMessage;
|
||||
PBASE_GET_VDM_EXIT_CODE GetVdmExitCode = &ApiMessage.Data.GetVdmExitCode;
|
||||
PBASE_GET_VDM_EXIT_CODE GetVdmExitCode = &ApiMessage.Data.GetVDMExitCodeRequest;
|
||||
|
||||
/* It's VDM if the process is actually a wait handle (an event) */
|
||||
Status = NtQueryEvent(ProcessHandle,
|
||||
|
@ -192,7 +190,6 @@ BaseCheckForVDM(IN HANDLE ProcessHandle,
|
|||
|
||||
/* Get the exit code from the reply */
|
||||
*ExitCode = GetVdmExitCode->ExitCode;
|
||||
#endif
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -755,17 +752,31 @@ CmdBatNotification (
|
|||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
* @implemented
|
||||
*/
|
||||
DWORD
|
||||
VOID
|
||||
WINAPI
|
||||
ExitVDM (
|
||||
DWORD Unknown0,
|
||||
DWORD Unknown1
|
||||
)
|
||||
ExitVDM(BOOL IsWow, ULONG iWowTask)
|
||||
{
|
||||
STUB;
|
||||
return 0;
|
||||
BASE_API_MESSAGE ApiMessage;
|
||||
PBASE_EXIT_VDM ExitVdm = &ApiMessage.Data.ExitVDMRequest;
|
||||
|
||||
/* Setup the input parameters */
|
||||
ExitVdm->ConsoleHandle = NtCurrentPeb()->ProcessParameters->ConsoleHandle;
|
||||
ExitVdm->iWowTask = IsWow ? iWowTask : 0; /* Always zero for DOS tasks */
|
||||
ExitVdm->WaitObjectForVDM = NULL;
|
||||
|
||||
/* Call CSRSS */
|
||||
CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
|
||||
NULL,
|
||||
CSR_CREATE_API_NUMBER(BASESRV_SERVERDLL_INDEX, BasepExitVDM),
|
||||
sizeof(BASE_EXIT_VDM));
|
||||
|
||||
/* Close the returned wait object handle, if any */
|
||||
if (NT_SUCCESS(ApiMessage.Status) && (ExitVdm->WaitObjectForVDM != NULL))
|
||||
{
|
||||
CloseHandle(ExitVdm->WaitObjectForVDM);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue