1 /* $Id: conio.c,v 1.1 1999/12/22 14:48:30 dwelch Exp $
3 * reactos/subsys/csrss/api/conio.c
5 * Console I/O functions
7 * ReactOS Operating System
10 /* INCLUDES ******************************************************************/
12 #include <ddk/ntddk.h>
17 /* GLOBALS *******************************************************************/
19 static HANDLE ConsoleDevice
;
20 static HANDLE KeyboardDevice
;
22 /* FUNCTIONS *****************************************************************/
24 NTSTATUS
CsrWriteConsole(PCSRSS_CONIO_PROCESS ProcessData
,
25 PCSRSS_REQUEST Message
,
30 if (ProcessData
->Console
== NULL
)
32 return(STATUS_UNSUCCESSFUL
);
35 Status
= NtWaitForSingleObject(ProcessData
->Console
->LockMutant
,
38 if (!NT_SUCCESS(Status
))
42 if (Status
== STATUS_ALERTED
||
43 Status
== STATUS_USER_APC
)
50 Status
= NtReleaseMutant(ProcessData
->Console
->LockMutant
, NULL
);
51 if (!NT_SUCCESS(Status
))
60 Status
= NtReleaseMutant(ProcessData
->Console
->LockMutant
, NULL
);
61 if (!NT_SUCCESS(Status
))
70 PCSRSS_CONIO_PROCESS
CsrAllocConioProcess(VOID
)
72 PCSRSS_CONIO_PROCESS ProcessData
;
74 ThreadData
= RtlAllocHeap(NULL
, HEAP_ZERO_MEMORY
,
75 sizeof(PROCESS_CONIO_THREAD
));
76 if (ThreadData
== NULL
)
80 ProcessData
->Console
= NULL
;
84 VOID
CsrFreeConioProcess(PCSRSS_CONIO_PROCESS ProcessData
)
86 RtlFreeHeap(NULL
, 0, ProcessData
);