mirror of
https://github.com/reactos/reactos.git
synced 2024-10-15 13:45:58 +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)
|
CSR_API(BaseSrvGetVDMCurDirs)
|
||||||
{
|
{
|
||||||
DPRINT1("%s not yet implemented\n", __FUNCTION__);
|
NTSTATUS Status;
|
||||||
return STATUS_NOT_IMPLEMENTED;
|
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)
|
CSR_API(BaseSrvBatNotification)
|
||||||
|
|
|
@ -15,6 +15,8 @@ typedef struct _VDM_CONSOLE_RECORD
|
||||||
{
|
{
|
||||||
LIST_ENTRY Entry;
|
LIST_ENTRY Entry;
|
||||||
HANDLE ConsoleHandle;
|
HANDLE ConsoleHandle;
|
||||||
|
PCHAR CurrentDirs;
|
||||||
|
ULONG CurDirsLength;
|
||||||
LIST_ENTRY DosListHead;
|
LIST_ENTRY DosListHead;
|
||||||
// TODO: Structure incomplete!!!
|
// TODO: Structure incomplete!!!
|
||||||
} VDM_CONSOLE_RECORD, *PVDM_CONSOLE_RECORD;
|
} VDM_CONSOLE_RECORD, *PVDM_CONSOLE_RECORD;
|
||||||
|
|
Loading…
Reference in a new issue