/*++ Copyright (c) 1997, Microsoft Corporation: Module Name: acpios.h Abstract: Functions which reside within the OS specific portion of the ACPI driver Author: Environment: NT Kernel Mode, Win9x Driver --*/ #ifdef WIN95_BUILD #define LOCKABLE_PRAGMA #define ACPI_LOCKABLE_CODE code_seg("PAGE", "CODE") #define ACPI_LOCKABLE_DATA data_seg(".edata", "DATA") #else #endif // // Open mode and other flags // #define OF_READONLY 0x00000000 #define OF_WRITEONLY 0x00000001 #define OF_READWRITE 0x00000002 #define OF_SHARE_DENYALL 0x00000010 #define OF_SHARE_DENYWRITE 0x00000020 #define OF_SHARE_DENYREAD 0x00000030 #define OF_SHARE_DENYNONE 0x00000040 #define OF_INHERIT_NONE 0x00000080 #define OF_DISABLE_INT24 0x00200000 #define OF_AUTOCOMMITONWRITE 0x00400000 // // Create attribute flags // #define CF_READONLY 0x00000001 #define CF_HIDDEN 0x00000002 #define CF_SYSTEM 0x00000004 #define CF_VOL_LABEL 0x00000008 #define CF_ARCHIVE 0x00000020 // // Action flags // #define AF_EXIST_FAIL 0x00000000 #define AF_EXIST_OPEN 0x00000001 #define AF_EXIST_REPLACE 0x00000002 #define AF_NOTEXIST_FAIL 0x00000000 #define AF_NOTEXIST_CREATE 0x00000010 // // Registry flags // #define REGF_HARDWARE 0x00000000 #define REGF_SOFTWARE 0x00000001 // // ACPI Registry key. // #define ACPI_REGISTRY_KEY \ L"\\Registry\\Machine\\System\\CurrentControlSet\\Services\\ACPI" // // Where to find the ACPI Registry information // #define ACPI_PARAMETERS_REGISTRY_KEY \ "\\Registry\\Machine\\System\\CurrentControlSet\\Services\\ACPI\\Parameters" // // Where to find the procesor information // #define ACPI_PROCESSOR_INFORMATION_KEY \ "\\Registry\\Machine\\Hardware\\Description\\System\\CentralProcessor\\0" // // String that identifies processor stepping information // #define ACPI_PROCESSOR_STEPPING_IDENTIFIER "Stepping" NTSTATUS ACPIDispatchForwardIrp( PDEVICE_OBJECT DeviceObject, PIRP Irp ); // // These are the functions that the OS-Specific part of the driver *must* // export // VOID ACPIAssert( ULONG Condition, ULONG ErrorCode, PCHAR ReplacementText, PCHAR SupplementalText, ULONG Flags ); #define ACPISimpleHardwareAssert(x,y) \ ACPIAssert((ULONG)(x),(y),0,0,BS_HARDWAREBIOS) #define ACPISimpleFatalHardwareAssert(x,y) \ ACPIAssert((x),(y),0,0,BS_HARDWAREBIOS|BS_REAPER) #define ACPISimpleSoftwareAssert(x,y) \ ACPIAssert((x),(y),0,0,BS_SOFTWARE) #define ACPISimpleFatalSoftwareAssert(x,y) \ ACPIAssert((x),(y),0,0,BS_SOFTWARE|BS_REAPER) #define ACPISimpleUnknownAssert(x,y) \ ACPIAssert((x),(y),0,0,0) #define ACPISimpleFatalUnknownAssert(x,y) \ ACPIAssert((x),(y),0,0,BS_REAPER) #if 0 ULONG DbgPrompt( PSZ pszPrompt, PSZ pszBuff, ULONG dwcbLen ); #endif NTSTATUS NotifyHalWithMachineStates( VOID ); NTSTATUS OSCloseHandle( HANDLE Handle ); PNSOBJ OSConvertDeviceHandleToPNSOBJ( PVOID DeviceHandle ); NTSTATUS OSCreateHandle( PSZ KeyName, HANDLE ParentHandle, PHANDLE ChildHandle ); NTSTATUS OSGetRegistryValue( IN HANDLE ParentHandle, IN PWSTR ValueName, OUT PKEY_VALUE_PARTIAL_INFORMATION_ALIGN64 *Information ); VOID OSInitialize( PDRIVER_OBJECT DriverObject ); BOOLEAN OSInterruptVector( PVOID Context ); VOID OSInitializeCallbacks( VOID ); NTSTATUS EXPORT OSNotifyDeviceEnum( PNSOBJ AcpiObject ); NTSTATUS EXPORT OSNotifyDeviceCheck( PNSOBJ AcpiObject ); NTSTATUS EXPORT OSNotifyDeviceWake( PNSOBJ AcpiObject ); NTSTATUS EXPORT OSNotifyDeviceEject( PNSOBJ AcpiObject ); VOID EXPORT OSNotifyDeviceWakeByGPEEvent( IN ULONG GpeBit, IN ULONG GpeRegister, IN ULONG GpeMask ); NTSTATUS OSOpenHandle( PSZ KeyName, HANDLE ParentHandle, PHANDLE ChildHandle ); NTSTATUS OSOpenLargestSubkey( HANDLE ParentHandle, PHANDLE ChildHandle, ULONG RomVersion ); NTSTATUS OSOpenUnicodeHandle( PUNICODE_STRING KeyName, HANDLE ParentHandle, PHANDLE ChildHandle ); NTSTATUS OSReadAcpiConfigurationData( PKEY_VALUE_PARTIAL_INFORMATION_ALIGN64 *KeyInfo ); NTSTATUS OSReadRegValue( PSZ ValueName, HANDLE ParentHandle, PVOID Buffer, PULONG BufferSize ); NTSTATUS OSWriteRegValue( PSZ ValueName, HANDLE Handle, PVOID Data, ULONG DataSize ); VOID OSQueueWorkItem( IN PWORK_QUEUE_ITEM WorkItem ); // // NT only deals with Device Objects so this can be done directly // from acpipowr.c // Memphis may be dealing with a PDO or DevNode so OS Specific // code needs to determine which and convert. // #ifndef _WIN32_WINNT extern ULONG gPm1Status; VOID OSDeviceCheck ( PVOID DeviceHandle ); VOID OSDeviceCheckOnParent ( PVOID DeviceHandle ); VOID WakeupFrom ( PNSOBJ pnsobj ); BOOLEAN OSLockRegion ( ULONG dwRegionAddr, ULONG dwRegionSize ); BOOLEAN OSUnlockRegion ( ULONG dwRegionAddr, ULONG dwRegionSize ); BOOLEAN OSVerifyBuffer ( PVOID pvBuff, ULONG dwLen ); VOID OSSleep ( ULONG dwUSecs ); #endif