3 * COPYRIGHT: See COPYING in the top level directory
4 * PROJECT: ReactOS system libraries
5 * FILE: dll/win32/kernel32/misc/error.c
6 * PURPOSE: Environment functions
7 * PROGRAMMER: Emanuele Aliberti
25 Beep (DWORD dwFreq
, DWORD dwDuration
)
28 UNICODE_STRING BeepDevice
;
29 OBJECT_ATTRIBUTES ObjectAttributes
;
30 IO_STATUS_BLOCK IoStatusBlock
;
31 BEEP_SET_PARAMETERS BeepSetParameters
;
34 /* check the parameters */
35 if ((dwFreq
>= 0x25 && dwFreq
<= 0x7FFF) ||
36 (dwFreq
== 0x0 && dwDuration
== 0x0))
39 RtlInitUnicodeString(&BeepDevice
,
42 InitializeObjectAttributes(&ObjectAttributes
,
48 Status
= NtCreateFile(&hBeep
,
49 FILE_READ_DATA
| FILE_WRITE_DATA
,
54 FILE_SHARE_READ
| FILE_SHARE_WRITE
,
59 if (NT_SUCCESS(Status
))
62 BeepSetParameters
.Frequency
= dwFreq
;
63 BeepSetParameters
.Duration
= dwDuration
;
65 Status
= NtDeviceIoControlFile(hBeep
,
72 sizeof(BEEP_SET_PARAMETERS
),
76 /* do an alertable wait if necessary */
77 if (NT_SUCCESS(Status
) &&
78 (dwFreq
!= 0x0 || dwDuration
!= 0x0) && dwDuration
!= MAXDWORD
)
88 Status
= STATUS_INVALID_PARAMETER
;
90 if (!NT_SUCCESS(Status
))
92 SetLastErrorByStatus (Status
);