mirror of
https://github.com/reactos/reactos.git
synced 2024-10-15 05:37:44 +00:00
[BASESRV]
Implement BaseSrvGetVDMCurDirs. The current directory information is stored in the console record, and it applies to all DOS records within it. svn path=/branches/ntvdm/; revision=62086
This commit is contained in:
parent
884d0853f8
commit
d0176d9ee8
|
@ -142,8 +142,43 @@ CSR_API(BaseSrvSetVDMCurDirs)
|
|||
|
||||
CSR_API(BaseSrvGetVDMCurDirs)
|
||||
{
|
||||
DPRINT1("%s not yet implemented\n", __FUNCTION__);
|
||||
return STATUS_NOT_IMPLEMENTED;
|
||||
NTSTATUS Status;
|
||||
PBASE_GETSET_VDM_CURDIRS VDMCurrentDirsRequest = &((PBASE_API_MESSAGE)ApiMessage)->Data.VDMCurrentDirsRequest;
|
||||
PVDM_CONSOLE_RECORD ConsoleRecord;
|
||||
|
||||
/* Validate the output buffer */
|
||||
if (!CsrValidateMessageBuffer(ApiMessage,
|
||||
(PVOID*)&VDMCurrentDirsRequest->lpszzCurDirs,
|
||||
VDMCurrentDirsRequest->cchCurDirs,
|
||||
sizeof(*VDMCurrentDirsRequest->lpszzCurDirs)))
|
||||
{
|
||||
return STATUS_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
/* Enter the critical section */
|
||||
RtlEnterCriticalSection(&DosCriticalSection);
|
||||
|
||||
/* Find the console record */
|
||||
Status = BaseSrvGetConsoleRecord(VDMCurrentDirsRequest->ConsoleHandle, &ConsoleRecord);
|
||||
if (!NT_SUCCESS(Status)) goto Cleanup;
|
||||
|
||||
/* Check if the buffer is large enough */
|
||||
if (VDMCurrentDirsRequest->cchCurDirs < ConsoleRecord->CurDirsLength)
|
||||
{
|
||||
Status = STATUS_BUFFER_TOO_SMALL;
|
||||
goto Cleanup;
|
||||
}
|
||||
|
||||
/* Copy the data */
|
||||
RtlMoveMemory(VDMCurrentDirsRequest->lpszzCurDirs,
|
||||
ConsoleRecord->CurrentDirs,
|
||||
ConsoleRecord->CurDirsLength);
|
||||
|
||||
Cleanup:
|
||||
/* Leave the critical section */
|
||||
RtlLeaveCriticalSection(&DosCriticalSection);
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
||||
CSR_API(BaseSrvBatNotification)
|
||||
|
|
|
@ -15,6 +15,8 @@ typedef struct _VDM_CONSOLE_RECORD
|
|||
{
|
||||
LIST_ENTRY Entry;
|
||||
HANDLE ConsoleHandle;
|
||||
PCHAR CurrentDirs;
|
||||
ULONG CurDirsLength;
|
||||
LIST_ENTRY DosListHead;
|
||||
// TODO: Structure incomplete!!!
|
||||
} VDM_CONSOLE_RECORD, *PVDM_CONSOLE_RECORD;
|
||||
|
|
Loading…
Reference in a new issue