mirror of
https://github.com/reactos/reactos.git
synced 2025-02-23 00:45:24 +00:00
[VIDEOPRT] [FORMATTING] No code change
This commit is contained in:
parent
9ab3246d43
commit
e7b3c66a42
1 changed files with 126 additions and 95 deletions
|
@ -41,7 +41,7 @@ IntInitializeVideoAddressSpace(VOID)
|
|||
LARGE_INTEGER Offset;
|
||||
SIZE_T ViewSize;
|
||||
#ifdef _M_IX86
|
||||
CHAR IVTAndBda[1024+256];
|
||||
CHAR IVTAndBda[1024 + 256];
|
||||
#endif // _M_IX86
|
||||
|
||||
/* Free the 1MB pre-reserved region. In reality, ReactOS should simply support us mapping the view into the reserved area, but it doesn't. */
|
||||
|
@ -151,124 +151,134 @@ IntInitializeVideoAddressSpace(VOID)
|
|||
#endif
|
||||
|
||||
#if defined(_M_IX86)
|
||||
VP_STATUS NTAPI
|
||||
VP_STATUS
|
||||
NTAPI
|
||||
IntInt10AllocateBuffer(
|
||||
IN PVOID Context,
|
||||
OUT PUSHORT Seg,
|
||||
OUT PUSHORT Off,
|
||||
IN OUT PULONG Length)
|
||||
IN PVOID Context,
|
||||
OUT PUSHORT Seg,
|
||||
OUT PUSHORT Off,
|
||||
IN OUT PULONG Length)
|
||||
{
|
||||
PVOID MemoryAddress;
|
||||
NTSTATUS Status;
|
||||
PKPROCESS CallingProcess = (PKPROCESS)PsGetCurrentProcess();
|
||||
KAPC_STATE ApcState;
|
||||
PVOID MemoryAddress;
|
||||
NTSTATUS Status;
|
||||
PKPROCESS CallingProcess = (PKPROCESS)PsGetCurrentProcess();
|
||||
KAPC_STATE ApcState;
|
||||
|
||||
TRACE_(VIDEOPRT, "IntInt10AllocateBuffer\n");
|
||||
TRACE_(VIDEOPRT, "IntInt10AllocateBuffer\n");
|
||||
|
||||
IntAttachToCSRSS(&CallingProcess, &ApcState);
|
||||
IntAttachToCSRSS(&CallingProcess, &ApcState);
|
||||
|
||||
MemoryAddress = (PVOID)0x20000;
|
||||
Status = ZwAllocateVirtualMemory(NtCurrentProcess(), &MemoryAddress, 0,
|
||||
Length, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
|
||||
MemoryAddress = (PVOID)0x20000;
|
||||
Status = ZwAllocateVirtualMemory(NtCurrentProcess(),
|
||||
&MemoryAddress,
|
||||
0,
|
||||
Length,
|
||||
MEM_COMMIT,
|
||||
PAGE_EXECUTE_READWRITE);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
WARN_(VIDEOPRT, "- ZwAllocateVirtualMemory failed\n");
|
||||
IntDetachFromCSRSS(&CallingProcess, &ApcState);
|
||||
return ERROR_NOT_ENOUGH_MEMORY;
|
||||
}
|
||||
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
WARN_(VIDEOPRT, "- ZwAllocateVirtualMemory failed\n");
|
||||
IntDetachFromCSRSS(&CallingProcess, &ApcState);
|
||||
return ERROR_NOT_ENOUGH_MEMORY;
|
||||
}
|
||||
if (MemoryAddress > (PVOID)(0x100000 - *Length))
|
||||
{
|
||||
ZwFreeVirtualMemory(NtCurrentProcess(), &MemoryAddress, Length,
|
||||
MEM_RELEASE);
|
||||
WARN_(VIDEOPRT, "- Unacceptable memory allocated\n");
|
||||
IntDetachFromCSRSS(&CallingProcess, &ApcState);
|
||||
return ERROR_NOT_ENOUGH_MEMORY;
|
||||
}
|
||||
|
||||
if (MemoryAddress > (PVOID)(0x100000 - *Length))
|
||||
{
|
||||
ZwFreeVirtualMemory(NtCurrentProcess(), &MemoryAddress, Length,
|
||||
MEM_RELEASE);
|
||||
WARN_(VIDEOPRT, "- Unacceptable memory allocated\n");
|
||||
IntDetachFromCSRSS(&CallingProcess, &ApcState);
|
||||
return ERROR_NOT_ENOUGH_MEMORY;
|
||||
}
|
||||
*Seg = (USHORT)((ULONG)MemoryAddress >> 4);
|
||||
*Off = (USHORT)((ULONG)MemoryAddress & 0xF);
|
||||
|
||||
*Seg = (USHORT)((ULONG)MemoryAddress >> 4);
|
||||
*Off = (USHORT)((ULONG)MemoryAddress & 0xF);
|
||||
INFO_(VIDEOPRT, "- Segment: %x\n", (ULONG)MemoryAddress >> 4);
|
||||
INFO_(VIDEOPRT, "- Offset: %x\n", (ULONG)MemoryAddress & 0xF);
|
||||
INFO_(VIDEOPRT, "- Length: %x\n", *Length);
|
||||
|
||||
INFO_(VIDEOPRT, "- Segment: %x\n", (ULONG)MemoryAddress >> 4);
|
||||
INFO_(VIDEOPRT, "- Offset: %x\n", (ULONG)MemoryAddress & 0xF);
|
||||
INFO_(VIDEOPRT, "- Length: %x\n", *Length);
|
||||
IntDetachFromCSRSS(&CallingProcess, &ApcState);
|
||||
|
||||
IntDetachFromCSRSS(&CallingProcess, &ApcState);
|
||||
|
||||
return NO_ERROR;
|
||||
return NO_ERROR;
|
||||
}
|
||||
|
||||
VP_STATUS NTAPI
|
||||
VP_STATUS
|
||||
NTAPI
|
||||
IntInt10FreeBuffer(
|
||||
IN PVOID Context,
|
||||
IN USHORT Seg,
|
||||
IN USHORT Off)
|
||||
IN PVOID Context,
|
||||
IN USHORT Seg,
|
||||
IN USHORT Off)
|
||||
{
|
||||
PVOID MemoryAddress = (PVOID)((Seg << 4) | Off);
|
||||
NTSTATUS Status;
|
||||
PKPROCESS CallingProcess = (PKPROCESS)PsGetCurrentProcess();
|
||||
KAPC_STATE ApcState;
|
||||
SIZE_T Size = 0;
|
||||
PVOID MemoryAddress = (PVOID)((Seg << 4) | Off);
|
||||
NTSTATUS Status;
|
||||
PKPROCESS CallingProcess = (PKPROCESS)PsGetCurrentProcess();
|
||||
KAPC_STATE ApcState;
|
||||
SIZE_T Size = 0;
|
||||
|
||||
TRACE_(VIDEOPRT, "IntInt10FreeBuffer\n");
|
||||
INFO_(VIDEOPRT, "- Segment: %x\n", Seg);
|
||||
INFO_(VIDEOPRT, "- Offset: %x\n", Off);
|
||||
TRACE_(VIDEOPRT, "IntInt10FreeBuffer\n");
|
||||
INFO_(VIDEOPRT, "- Segment: %x\n", Seg);
|
||||
INFO_(VIDEOPRT, "- Offset: %x\n", Off);
|
||||
|
||||
IntAttachToCSRSS(&CallingProcess, &ApcState);
|
||||
Status = ZwFreeVirtualMemory(NtCurrentProcess(), &MemoryAddress, &Size,
|
||||
MEM_RELEASE);
|
||||
IntDetachFromCSRSS(&CallingProcess, &ApcState);
|
||||
IntAttachToCSRSS(&CallingProcess, &ApcState);
|
||||
Status = ZwFreeVirtualMemory(NtCurrentProcess(),
|
||||
&MemoryAddress,
|
||||
&Size,
|
||||
MEM_RELEASE);
|
||||
|
||||
return Status;
|
||||
IntDetachFromCSRSS(&CallingProcess, &ApcState);
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
||||
VP_STATUS NTAPI
|
||||
VP_STATUS
|
||||
NTAPI
|
||||
IntInt10ReadMemory(
|
||||
IN PVOID Context,
|
||||
IN USHORT Seg,
|
||||
IN USHORT Off,
|
||||
OUT PVOID Buffer,
|
||||
IN ULONG Length)
|
||||
IN PVOID Context,
|
||||
IN USHORT Seg,
|
||||
IN USHORT Off,
|
||||
OUT PVOID Buffer,
|
||||
IN ULONG Length)
|
||||
{
|
||||
PKPROCESS CallingProcess = (PKPROCESS)PsGetCurrentProcess();
|
||||
KAPC_STATE ApcState;
|
||||
PKPROCESS CallingProcess = (PKPROCESS)PsGetCurrentProcess();
|
||||
KAPC_STATE ApcState;
|
||||
|
||||
TRACE_(VIDEOPRT, "IntInt10ReadMemory\n");
|
||||
INFO_(VIDEOPRT, "- Segment: %x\n", Seg);
|
||||
INFO_(VIDEOPRT, "- Offset: %x\n", Off);
|
||||
INFO_(VIDEOPRT, "- Buffer: %x\n", Buffer);
|
||||
INFO_(VIDEOPRT, "- Length: %x\n", Length);
|
||||
TRACE_(VIDEOPRT, "IntInt10ReadMemory\n");
|
||||
INFO_(VIDEOPRT, "- Segment: %x\n", Seg);
|
||||
INFO_(VIDEOPRT, "- Offset: %x\n", Off);
|
||||
INFO_(VIDEOPRT, "- Buffer: %x\n", Buffer);
|
||||
INFO_(VIDEOPRT, "- Length: %x\n", Length);
|
||||
|
||||
IntAttachToCSRSS(&CallingProcess, &ApcState);
|
||||
RtlCopyMemory(Buffer, (PVOID)((Seg << 4) | Off), Length);
|
||||
IntDetachFromCSRSS(&CallingProcess, &ApcState);
|
||||
IntAttachToCSRSS(&CallingProcess, &ApcState);
|
||||
RtlCopyMemory(Buffer, (PVOID)((Seg << 4) | Off), Length);
|
||||
IntDetachFromCSRSS(&CallingProcess, &ApcState);
|
||||
|
||||
return NO_ERROR;
|
||||
return NO_ERROR;
|
||||
}
|
||||
|
||||
VP_STATUS NTAPI
|
||||
VP_STATUS
|
||||
NTAPI
|
||||
IntInt10WriteMemory(
|
||||
IN PVOID Context,
|
||||
IN USHORT Seg,
|
||||
IN USHORT Off,
|
||||
IN PVOID Buffer,
|
||||
IN ULONG Length)
|
||||
IN PVOID Context,
|
||||
IN USHORT Seg,
|
||||
IN USHORT Off,
|
||||
IN PVOID Buffer,
|
||||
IN ULONG Length)
|
||||
{
|
||||
PKPROCESS CallingProcess = (PKPROCESS)PsGetCurrentProcess();
|
||||
KAPC_STATE ApcState;
|
||||
PKPROCESS CallingProcess = (PKPROCESS)PsGetCurrentProcess();
|
||||
KAPC_STATE ApcState;
|
||||
|
||||
TRACE_(VIDEOPRT, "IntInt10WriteMemory\n");
|
||||
INFO_(VIDEOPRT, "- Segment: %x\n", Seg);
|
||||
INFO_(VIDEOPRT, "- Offset: %x\n", Off);
|
||||
INFO_(VIDEOPRT, "- Buffer: %x\n", Buffer);
|
||||
INFO_(VIDEOPRT, "- Length: %x\n", Length);
|
||||
TRACE_(VIDEOPRT, "IntInt10WriteMemory\n");
|
||||
INFO_(VIDEOPRT, "- Segment: %x\n", Seg);
|
||||
INFO_(VIDEOPRT, "- Offset: %x\n", Off);
|
||||
INFO_(VIDEOPRT, "- Buffer: %x\n", Buffer);
|
||||
INFO_(VIDEOPRT, "- Length: %x\n", Length);
|
||||
|
||||
IntAttachToCSRSS(&CallingProcess, &ApcState);
|
||||
RtlCopyMemory((PVOID)((Seg << 4) | Off), Buffer, Length);
|
||||
IntDetachFromCSRSS(&CallingProcess, &ApcState);
|
||||
IntAttachToCSRSS(&CallingProcess, &ApcState);
|
||||
RtlCopyMemory((PVOID)((Seg << 4) | Off), Buffer, Length);
|
||||
IntDetachFromCSRSS(&CallingProcess, &ApcState);
|
||||
|
||||
return NO_ERROR;
|
||||
return NO_ERROR;
|
||||
}
|
||||
|
||||
VP_STATUS
|
||||
|
@ -286,7 +296,7 @@ IntInt10CallBios(
|
|||
IntAttachToCSRSS(&CallingProcess, &ApcState);
|
||||
|
||||
/* Clear the context */
|
||||
RtlZeroMemory(&BiosContext, sizeof(CONTEXT));
|
||||
RtlZeroMemory(&BiosContext, sizeof(BiosContext));
|
||||
|
||||
/* Fill out the bios arguments */
|
||||
BiosContext.Eax = BiosArguments->Eax;
|
||||
|
@ -300,8 +310,14 @@ IntInt10CallBios(
|
|||
BiosContext.SegEs = BiosArguments->SegEs;
|
||||
|
||||
/* Do the ROM BIOS call */
|
||||
(void)KeWaitForMutexObject(&VideoPortInt10Mutex, Executive, KernelMode, FALSE, NULL);
|
||||
(void)KeWaitForMutexObject(&VideoPortInt10Mutex,
|
||||
Executive,
|
||||
KernelMode,
|
||||
FALSE,
|
||||
NULL);
|
||||
|
||||
Status = Ke386CallBios(0x10, &BiosContext);
|
||||
|
||||
KeReleaseMutex(&VideoPortInt10Mutex, FALSE);
|
||||
|
||||
/* Return the arguments */
|
||||
|
@ -317,7 +333,12 @@ IntInt10CallBios(
|
|||
|
||||
/* Detach and return status */
|
||||
IntDetachFromCSRSS(&CallingProcess, &ApcState);
|
||||
if (NT_SUCCESS(Status)) return NO_ERROR;
|
||||
|
||||
if (NT_SUCCESS(Status))
|
||||
{
|
||||
return NO_ERROR;
|
||||
}
|
||||
|
||||
return ERROR_INVALID_PARAMETER;
|
||||
}
|
||||
#endif
|
||||
|
@ -328,7 +349,8 @@ IntInt10CallBios(
|
|||
* @implemented
|
||||
*/
|
||||
|
||||
VP_STATUS NTAPI
|
||||
VP_STATUS
|
||||
NTAPI
|
||||
VideoPortInt10(
|
||||
IN PVOID HwDeviceExtension,
|
||||
IN PVIDEO_X86_BIOS_ARGUMENTS BiosArguments)
|
||||
|
@ -341,7 +363,7 @@ VideoPortInt10(
|
|||
|
||||
if (!CsrssInitialized)
|
||||
{
|
||||
return ERROR_INVALID_PARAMETER;
|
||||
return ERROR_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
/* Attach to CSRSS */
|
||||
|
@ -360,7 +382,11 @@ VideoPortInt10(
|
|||
BiosContext.Ebp = BiosArguments->Ebp;
|
||||
|
||||
/* Do the ROM BIOS call */
|
||||
(void)KeWaitForMutexObject(&VideoPortInt10Mutex, Executive, KernelMode, FALSE, NULL);
|
||||
(void)KeWaitForMutexObject(&VideoPortInt10Mutex,
|
||||
Executive,
|
||||
KernelMode,
|
||||
FALSE,
|
||||
NULL);
|
||||
Status = Ke386CallBios(0x10, &BiosContext);
|
||||
KeReleaseMutex(&VideoPortInt10Mutex, FALSE);
|
||||
|
||||
|
@ -375,7 +401,12 @@ VideoPortInt10(
|
|||
|
||||
/* Detach from CSRSS */
|
||||
IntDetachFromCSRSS(&CallingProcess, &ApcState);
|
||||
if (NT_SUCCESS(Status)) return NO_ERROR;
|
||||
|
||||
if (NT_SUCCESS(Status))
|
||||
{
|
||||
return NO_ERROR;
|
||||
}
|
||||
|
||||
return ERROR_INVALID_PARAMETER;
|
||||
#else
|
||||
/* Not implemented for anything else than X86*/
|
||||
|
|
Loading…
Reference in a new issue