/* MusicKeyboard's Windows NT Native API Wrapper header. * * This header emulates for the poor compilers without this * header, and allows for the GetProcAddress of some functions in ntdll.dll, * which allows for on demand beep start and stop. */ #pragma once #ifndef id3F62391D_3432_4F1C_A9E03EA4B121A1A5 #define id3F62391D_3432_4F1C_A9E03EA4B121A1A5 typedef LONG NTSTATUS; #ifndef _WINIOCTL_ typedef struct _BEEP_PARAM { ULONG Frequency; ULONG Duration; } BEEP_PARAM, *PBEEP_PARAM, *LPBEEP_PARAM; #define CTL_CODE( DeviceType, Function, Method, Access ) (\ ((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method) \ ) #define FILE_DEVICE_BEEP 0x00000001 #define METHOD_BUFFERED 0 #define FILE_ANY_ACCESS 0 #define IOCTL_BEEP_SET CTL_CODE(FILE_DEVICE_BEEP,0,METHOD_BUFFERED,FILE_ANY_ACCESS) #endif /* _WINIOCTL_ */ #ifndef _WINTERNL_ typedef struct _UNICODE_STRING { USHORT Length; USHORT MaximumLength; PWSTR Buffer; } UNICODE_STRING, *PUNICODE_STRING; typedef const UNICODE_STRING *PCUNICODE_STRING; typedef struct _OBJECT_ATTRIBUTES { ULONG Length; HANDLE RootDirectory; PUNICODE_STRING ObjectName; ULONG Attributes; PVOID SecurityDescriptor; PVOID SecurityQualityOfService; } OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES; typedef struct _IO_STATUS_BLOCK { union { NTSTATUS Status; PVOID Pointer; } DUMMYUNIONNAME; ULONG_PTR Information; } IO_STATUS_BLOCK, *PIO_STATUS_BLOCK; #endif /* _WINTERNL_ */ #ifndef NT_SUCCESS #define NT_SUCCESS(Status) (((NTSTATUS)(Status)) >= 0) #endif #ifndef FILE_OPEN_IF #define FILE_OPEN_IF 0x00000003 #endif #ifndef InitializeObjectAttributes #define InitializeObjectAttributes( p, n, a, r, s ) { \ (p)->Length = sizeof( OBJECT_ATTRIBUTES ); \ (p)->RootDirectory = r; \ (p)->Attributes = a; \ (p)->ObjectName = n; \ (p)->SecurityDescriptor = s; \ (p)->SecurityQualityOfService = NULL; \ } #endif #ifndef NTAPI # define NTAPI WINAPI #endif typedef VOID (NTAPI *T_RtlInitUnicodeString)(PUNICODE_STRING DestinationString, PCWSTR SourceString); typedef NTSTATUS (NTAPI *T_NtCreateFile)(PHANDLE FileHandle, ACCESS_MASK DesiredAccess, POBJECT_ATTRIBUTES ObjectAttributes, PIO_STATUS_BLOCK IoStatusBlock, PLARGE_INTEGER AllocationSize OPTIONAL, ULONG FileAttributes, ULONG ShareAccess, ULONG CreateDisposition, ULONG CreateOptions, PVOID EaBuffer OPTIONAL, ULONG EaLength); #endif