:pserver:cvsanon@mok.lvcm.com:/CVS/ReactOS reactos
[reactos.git] / lib / kernel32 / misc / error.c
1 /* $Id$
2  *
3  * reactos/lib/kernel32/misc/error.c
4  *
5  */
6 #include <ddk/ntddk.h>
7 #include <ddk/ntddbeep.h>
8
9 // #define NDEBUG
10 #include <kernel32/kernel32.h>
11 #include <kernel32/error.h>
12
13
14 /* INTERNAL */
15 DWORD
16 STDCALL
17 SetLastErrorByStatus (
18         NTSTATUS        Status
19         )
20 {
21         DWORD Error = RtlNtStatusToDosError (Status);
22         SetLastError (Error);
23         return (Error);
24 }
25
26
27 VOID
28 STDCALL
29 SetLastError (
30         DWORD   dwErrorCode
31         )
32 {
33         NtCurrentTeb ()->LastErrorValue = (ULONG) dwErrorCode;
34 }
35
36 DWORD
37 STDCALL
38 GetLastError (VOID)
39 {
40         return (DWORD) (NtCurrentTeb ()->LastErrorValue);
41 }
42
43
44 WINBOOL
45 STDCALL
46 Beep (DWORD dwFreq, DWORD dwDuration)
47 {
48     HANDLE hBeep;
49     BEEP_SET_PARAMETERS BeepSetParameters;
50     DWORD dwReturned;
51
52     hBeep = CreateFile("\\\\.\\Beep",
53                        FILE_GENERIC_READ | FILE_GENERIC_WRITE,
54                        0,
55                        NULL,
56                        OPEN_EXISTING,
57                        0,
58                        NULL);
59     if (hBeep == INVALID_HANDLE_VALUE)
60         return FALSE;
61
62     /* Set beep data */
63     BeepSetParameters.Frequency = dwFreq;
64     BeepSetParameters.Duration  = dwDuration;
65
66     DeviceIoControl(hBeep,
67                     IOCTL_BEEP_SET,
68                     &BeepSetParameters,
69                     sizeof(BEEP_SET_PARAMETERS),
70                     NULL,
71                     0,
72                     &dwReturned,
73                     NULL);
74
75     CloseHandle (hBeep);
76
77     return TRUE;
78 }
79
80
81 /* EOF */