Professional Documents
Culture Documents
Functional Specification
For
HP 3D DriveGuard
Version 6.0.0.8
Ujjawal Bagga
02/13/2015
Disclaimer
The information contained within this document, including URL, other web site references, and other
specification documents are subject to change without notice and are provided for informational purposes
only. No licenses with respect to any intellectual property are being granted, expressly or impliedly, by the
disclosure of the information contained in this document. Furthermore, neither Hewlett Packard nor any of
its subsidiaries makes any warranties of any nature regarding the use of the information contained within
this document, and thus the entire risk, if any, resulting from the use of information within this document is
the sole responsibility of the user. In addition, the names of the technologies, actual companies, and
products mentioned within this document may be trademarks of their respective owners. Complying with
all applicable copyright and trademark laws is the sole responsibility of the user of this document. Without
limiting any rights under copyright, no part of this document may be reproduced, stored, or transmitted in
any form or by any means without the express written consent of Hewlett Packard.
Hewlett Packard or its subsidiaries may have patents, patent applications, trademarks, copyrights, or other
intellectual property rights covering the subject matter in this document. Except where expressly provided
in any written license from Hewlett Packard or its subsidiaries, the furnishing of this document, or any
ideas contained within, does not grant any license to these ideas, patents, trademarks, copyrights, or other
intellectual property.
© 2003 – 2013 Hewlett-Packard Development Company, L.P. All Rights Reserved.
Contents
1. PREFACE................................................................................................................................ 5
2. REVISION HISTORY............................................................................................................... 5
3. REFERENCES........................................................................................................................ 5
4. TERMINOLOGY...................................................................................................................... 5
5. INTRODUCTION..................................................................................................................... 7
6. DESIGN OVERVIEW............................................................................................................... 7
7. ARCHITECTURE.................................................................................................................... 7
7.1.1 HDD Freefall Event Management.................................................................................9
7.2 COMPONENT DESCRIPTIONS.................................................................................................11
8. HP 3D DRIVEGUARD USER INTERFACE...........................................................................11
8.1 SYSTEM TRAY...................................................................................................................... 12
8.2 WINDOWS MOBILITY CENTER TILE........................................................................................13
9. HDD FREEFALL PROTECTION DETAILS...........................................................................15
9.1 USER SCENARIOS................................................................................................................ 15
9.1.1 Drop scenario.............................................................................................................. 15
9.1.2 Abrupt Movement scenario.........................................................................................15
9.2 PERFORMANCE MATRIX........................................................................................................ 15
9.3 KNOWN LIMITATIONS............................................................................................................ 15
9.4 PROTECTION LEVELS............................................................................................................ 16
9.5 EXPECTED BEHAVIOR........................................................................................................... 16
9.5.1 LED notification when in Parked mode.......................................................................16
9.5.2 Shock Event Duration and Sensitivity.........................................................................17
9.5.3 Power Management Expectations...............................................................................17
9.6 STORAGE DEVICES............................................................................................................... 17
9.6.1 Supported Storage Devices........................................................................................17
9.6.2 Unsupported Storage Devices....................................................................................18
9.6.3 Multi-Drive Support..................................................................................................... 18
9.6.4 Solid State Drives........................................................................................................ 18
10. INSTALLATION/SETUP........................................................................................................ 18
10.1 NEW INSTALL:................................................................................................................... 19
10.2 REPAIR INSTALL:............................................................................................................... 19
10.3 UPGRADE INSTALL:........................................................................................................... 19
10.4 DOWNGRADE INSTALL:...................................................................................................... 20
10.5 UNINSTALL:...................................................................................................................... 20
10.6 REGISTRY ENTRIES:.......................................................................................................... 20
10.7 DELIVERABLE COMPONENTS.............................................................................................. 20
10.8 INF FILE LOCATION.......................................................................................................... 22
11. NATIONAL LANGUAGE SUPPORT.....................................................................................22
12. REGISTRY KEYS.................................................................................................................. 23
13. LOGGING SUPPORT............................................................................................................ 25
14. ACCELEROMETER IOCTL INTERFACE.............................................................................26
14.1 IOCTL_ACCELEROMETER_POWER_NOTIFICATION................................................26
14.2 IOCTL_ACCELEROMETER_USER_LOGON................................................................27
14.3 IOCTL_ACCELEROMETER_GET_XYZ.........................................................................27
14.4 IOCTL_ACCELEROMETER_INITIATE_XYZ_EVENT...................................................28
14.5 IOCTL_ACCELEROMETER_TERMINATE_XYZ_EVENT.............................................28
14.6 IOCTL_ACCELEROMETER_GET_XYZ_EVENT_PROPERTY.....................................28
14.7 IOCTL_ACCELEROMETER_SET_XYZ_EVENT_PROPERTY......................................29
14.8 IOCTL_ACCELEROMETER_REGISTER_FOR_EVENTS.............................................29
14.9 IOCTL_ACCELEROMETER_PASS_THROUGH...........................................................30
14.10 IOCTL_ACCELEROMETER_CLEAR_LOG_FILE..........................................................31
14.11 IOCTL_ACCELEROMETER_SET_PROPERTY............................................................31
14.12 IOCTL_ACCELEROMETER_GET_PROPERTY............................................................32
15. HP PRIVATE ACPI CONTROL METHODS..........................................................................32
15.1 CLRI_METHOD.............................................................................................................. 33
15.2 ALRD_METHOD............................................................................................................. 33
15.3 ALED_METHOD............................................................................................................. 33
15.4 ALID_METHOD.............................................................................................................. 34
15.5 ADSN_METHOD............................................................................................................ 34
15.6 ALWR_METHOD............................................................................................................ 35
16. SECURITY RISK ASSESSMENT.......................................................................................... 35
TABLE OF FIGURES
TABLE OF TABLES
Table 1 – Terminology.................................................................................................................... 6
Table 2 - Deliverable Components............................................................................................... 11
Table 3 - Levels of Sensitivity....................................................................................................... 16
Table 4 - Application File List........................................................................................................ 21
Table 5 - Driver File List................................................................................................................ 22
Table 6 - Supported Languages................................................................................................... 23
Table 7 - HKLM\Software\Policies Registry Keys.........................................................................23
Table 8 - HKLM\System Registry Keys.........................................................................................25
1. PREFACE
The purpose of this Functional Specification document is to describe the expected functionality of
HP 3D DriveGuard before and after a shock occurs. This functional specification addresses the
deliverable behavior when running on Windows 7, Windows 8, Windows 8.1 and Windows 10.
2. REVISION HISTORY
Revised By Revision Revision Revision Description
Number Date
Fahad Ahmad 6.0.0.1 10/29/2012 GUI Removal updates
Fahad Ahmad 6.0.0.2 01/15/2013 Updates for registry, event logging etc.
Fahad Ahmad 6.0.0.5 07/23/2013 Updates for Win8.1
Fahad Ahmad 6.0.0.6 08/01/2013 Update the ‘Upgrade Install’ section
Ujjawal Bagga 6.0.0.7 02/06/2014 Updated new Icons for 2014
Ujjawal Bagga 6.0.0.8 02/13/2015 Updated 9.5.3 with SSD/HDD s3 behavior
3. REFERENCES
Hewlett-Packard “Blazing Saddles (XP)” Design and Architecture , OSR Open Systems
Resources, Version 1.0. 8/1/2005.
Hewlett-Packard Accelerometer “Blazing Saddles (XP)” Final Release Notes, OSR Open
Systems Resources, 11/15/2005
4. TERMINOLOGY
Throughout this Specification certain terminology is used which may need further clarification.
These terms are in conformance with Industry-standard definitions, as well as generally accepted
system software and architecture principles.
Accelerometer HP supplied device within the notebook that detects potential impending
danger to the notebook’s disks by sending changes in G-forces
Deliverable A collection of software modules provided in a single package to address a
specific set of requirements for a specific set of platforms and operating
systems.
Accelerometer Interrupt driven kernel module that receives interrupts from Accelerometer.
Driver
Disk Filter Driver Block Driver responsible for unloading the Hard drives heads.
SATA Serial ATA
PATA Parallel ATA
SCSI Small Computer System Interface
RAID Redundant array of independent disk
RAID Volume Grouping of several physical drives in a computer into an array, that user
can define as one or more logical drives.
Notebook Disk Hard disk drive(s) installed in the notebook that interface with the notebook
using the SATA, PATA, or SCSI standard
ACPI Advanced Configuration and Power Interface
Shock Event An event signaled by the Accelerometer driver in response to an interrupt
from the Accelerometer, indicating impending danger to notebook Disks
Shock End Event An event generated by the Accelerometer driver indicating that the
notebook disks are most likely not in danger of being damage.
Shock End Event Number of milliseconds after a Shock event that must pass without another
Period Shock event occurring before the accelerometer driver assumes that the
threat of impending danger to the notebook Disks has passed.
MCA Mobility Center Application
Table 1 – Terminology
5. INTRODUCTION
The purpose of this Functional Specification document is to describe the expected functionality of
HP 3D DriveGuard before and after a shock occurs.
HP 3D DriveGuard provides protection for your computer's disk drives during a shock event. For
example, if you drop your computer while using it, the accelerometer senses a change in the G-
force, park the disk drives, and halt I/O requests. The accelerometer sensor provides protection
anytime your computer is dropped or anytime abruptly impact another physical object.
6. Design Overview
This section provides an overview of the HP 3D DriveGuard design and architecture, by
describing the general behavior of each software component in the system. While reading the
overall behavior, the reader should remain mindful of the fact that this is an overview. Full design
details for each component are provided in Section 6 of this document.
As the Accelerometer device registers a Shock Warning Event, it notifies the Accelerometer
Driver that a Shock Warning Event has occurred by generating an interrupt. The Accelerometer
driver reacts by notifying the Disk Filter Driver of the event and turning the Amber HD LED light
ON. All supported HP private ACPI Control Methods invoked by the driver.
Upon receiving the Shock Warning Event signal, the Disk Filter driver proceeds to unload the
hard drive heads in the shortest time possible reducing or eliminating any damage to the
notebook hard drives. The Disk Filter driver then holds any subsequently received I/O requests in
a queue until it receives a Shock Warning End Event signal from the Accelerometer Driver.
7. Architecture
The following diagrams depict the overall architectural structure and process flow. This modular
design allows multiple applications to take advantage of the device capabilities. The design
supports both events driven, configuration, polling methodologies.
In this architecture, the Accelerometer Driver is responsible for notifying the other components in
the system of the occurrence of a Shock Event. The Accelerometer device tells the
Accelerometer Driver that a Shock Event has occurred by generating an interrupt.
After signaling the Shock Event, the Accelerometer Driver starts a timer for the Shock End Event
Period. When this timer expires, the Accelerometer Driver notifies the Disk Filter Driver of a
Shock End Event by setting a shared KEVENT. The Accelerometer Driver also sends a Device
Change Notification, to indicate the occurrence of the Shock Event to user-mode components,
and resets the interrupt on the Accelerometer by invoking an ACPI method.
When it receives notification of the Shock Event, the Disk Filter Driver provides Protection by
taking the following two actions:
A worker thread created by the Disk Filter Driver, running in kernel-mode, sends an
Unload Command to each ATA Disk. The commands are sent asynchronously using a
dedicated IRP.
The main-line Disk Filter Driver code holds any newly arriving I/O requests (other than
PnP and Power requests) destined for the underlying disk stack by placing them in a
queue. Requests are held to prevent subsequent commands from “re-loading” the disk
heads prior to the occurrence of a Shock End Event.
After the Shock End Event Period has passed without any further Shock Events being reported,
the Accelerometer Driver notifies the Disk Filter Driver that Protection is no longer required by
signaling a Shock End Event.
When the Disk Filter Driver is notified of the Shock End Event, two important actions take place:
The Disk Filter Driver stops holding newly arriving I/O requests. Thus, the Disk Filter
Driver reverts to its normal processing and passes all I/O requests that it receives to the
underlying device.
The Disk Filter Driver worker thread forwards to the underlying disk stack those requests
that had been held in its queue while Protection was provided.
It is important to note that, because of the basic design of Windows, it is not necessary for the
Disk Filter Driver to preserve the order of the I/O requests it receives. That is, the requests that
had been held subsequent to the Shock Event do not need to be submitted and processed first,
before new requests arriving at the Disk Filter Driver are submitted and processed. Thus, to
optimize the project’s architectural goals of reliability and testability, we decided not to preserve
the order of requests, thus eliminating a whole series of potential serialization problems.
The HP Service, which is a user mode entity, is present in order to detect the logon and logoff of
user sessions. This notification is used to alert the Accelerometer driver of potential changes in
user settings.
The following diagram depicts the logic and the accelerometer events processed to provide the
HDD freefall detection and protection support:
The HP 3D DriveGuard software package includes components that run under user-mode and
kernel-mode. Each component is described in the following table:
This application manages the taskbar icon which is used to display the state of the Accelerometer
System Software components. The components are either in the enabled or disabled state.
The systray applet will run by default.
Two menu options are provided by the System Tray Application when the user right-clicks on HP
3D DriveGuard icon as shown in the figure below.
NOTE: If hard drive protection is “Enabled”, the System Tray icon may switch to a “Parked” state
if a Shock Event occurs.
This opens a dialog box which displays the version of HP 3D DriveGuard installed and running on
the system.
This opens a dialog box which displays information regarding the functionality of HP 3D
DriveGuard.
HP3DDG also provides a Windows Mobility Center Tile which provides the current hard drive
protection status.
The icons that can be displayed by the Mobility Center Tile are based upon the current state of
the HDD freefall protection feature and are defined as follows:
Information button opens the information dialog box as described in section 8.1.1.2.
HP 3D DriveGuard must protect all non-removable hard drives whenever the notebook is dropped
or moved abruptly. Two common user scenarios are described below and must be used as the
basis of the overall hard drive expected protection. HP 3D DriveGuard solution must include
other real life scenarios in the final design.
3D DriveGuard must protect all hard drives when the notebook is dropped. This scenario
demonstrates how fast the system must react from the moment a drop is detected by the
accelerometer and the time the Disk Filter driver unloads the heads. Several field studies
showed that the hard drive heads must be unloaded by the time the notebook is about 4 inches
from the floor to minimize the damage inflicted on the drives.
3D DriveGuard must protect all hard drives when the notebook moves abruptly in excess of a
drop condition. This scenario demonstrates how the system must react when the accelerometer
detects an abrupt motion. Under normal circumstances, a user closes the notebook, picks it up
from the desk, and start walking out of his office without any incidents. There are other cases
when the user may hit the unit against a door ledge or any other hard surface. Those two cases
require the accelerometer to react to any abrupt movement and park the heads by the time the
user takes the first step.
On the drop scenario, a 9” fall takes approximately 214 ms (d = 0.5 * g * t^2). 3D DriveGuard
Free fall response budget must be within the values ranges listed below.
5 ms accelerometer Free Fall detection time, from start of freefall to assertion of interrupt
pin.
110ms time from accelerometer driver receipt of event notification till filter driver sends
Unload Immediate (IUI) command.
100ms drive response time to park heads based on receipt of IUI command.
The main purpose of HP 3D DriveGuard is to protect one or more internal hard drives whenever
the notebook is dropped or abruptly impacts another physical object. The design maximizes such
protection although limited by the OS architecture. There are several scenarios outside of which
the hard drive will be unprotected. All efforts must be made to minimize or eliminate any period of
time when all drives are unprotected whenever possible.
All hard drives will be unprotected from any Shock Warning Events during the periods or
conditions listed below.
The period of time between POST and the OS loads HP 3D DriveGuard modules
System is going into Standby
Both the accelerometer and filter driver work in conjunction to react to all Shock Warning events,
interact with ACPI Methods, and enable or disable all hard drive protection. The filter driver,
although responsible for protecting the drive, is unaware of any Shock Warning Events unless
those events are communicated by the accelerometer driver.
HP 3D DriveGuard provides two different levels of protection according to the Notebook Lid and
power state. SHORT and EXTENDED protection levels are defined by the drivers while the
accelerometer chip sensitivity is controlled by BIOS. Although both protection levels are identical
on how they react to any Shock Warning Event, the duration the filter driver waits prior releasing
the heads is different.
SHORT protection occurs when the notebook lid is open or is connected to AC. SHORT
protection level defines a wait time duration of 2000 milliseconds.
EXTENDED protection occurs when the lid is closed and running on battery. EXTENDED
protection level defines a wait time duration of 20000 milliseconds.
When a Shock Warning Event is registered while the EXTENDED or SHORT protection is active,
the timer is restarted.
Note: The accelerometer is dynamically reprogrammed by the HP KBC to support (2) levels of
sensitivity which map to these protection levels. For instance, HIGH Sensitivity to motion equates
to EXTENDED protection; LOW Sensitivity to motion equates to SHORT protection. See Table 3
for associated conditions
After the driver installs, any Shock Events will cause the hard drive to park. The amount of time
the drive stays in “Parked Mode” will vary depending on several factors such as Lid Open / Lid
Close and the system power state (AC / DC).
When the unit is in a “Parked” state, the LED for the hard drive will turn amber until it is no longer
in a “Parked” state.
The amount of time the HDD stays in a “Parked” Mode will vary depending on several factors
such Lid Open/Lid Close and AC/DC. This method provides the best coverage possible for
cases where a user may be traveling or just stationed at their desk/docking station.
“Low Sensitivity”
To trigger a Shock Event, the unit must be moved in a vertical motion (Up/Down).
“High Sensitivity”
To trigger a Shock Event, the unit can be moved in a Horizontal or Vertical motion (Up,
Down, or Sideways).
If a system is in a “Parked” state, it must complete its Shock Event Duration before it can
Shutdown, Restart, or go into Standby or Hibernation.
However, if your computer is running on battery power and reaches a critical low-battery
condition, HP 3D DriveGuard will allow the computer to initiate hibernation.
In case of SSD drive as primary/bootable drive and rotating disk(s) as secondary, system will
immediately end shock event and go to sleep or hibernate when pressing button while in shock
state.
9.5.4 Testing if the unit can successfully perform critical hibernation with
continuous shock events-
The critical battery level in this scenario is a fixed value in the BIOS which can vary between
platforms. The typical value is 5%. So for testing purposes, common mistake is setting the critical
battery level to a value below the current level using the power settings in the OS. Changing this
value in the OS has NO effect on the fixed value in the BIOS. If this value set in the OS is more
than the value in the BIOS, we will not see the system perform critical hibernation. This doesn’t
necessarily mean that the test failed. The only and correct way to test will be to start the test and
wait till the system powers off. With the next power on, if the system gives you an option to
resume then that means that the system indeed hibernated when the battery level fell below the
value in the BIOS and hence there was no data loss.
HP 3D DriveGuard support multiple types of storage devices while excluding external, devices
with removable media or removable devices. In some instances, storage controller vendors
provide device drivers which reports their devices as SCSI while in reality are SATA devices.
RAID Volumes - Support of RAID Volume is limited to those systems with an Intel RAID
Controller. Storage Controllers other than Intel RAID are not supported at this time.
Early architecture design provides support for a maximum of 2 internal drives. Today mobile
individual presents a new challenge and need for multi-drive notebooks. In order to address this
need, the new 2011 workstations will have a total of 3 internal drives.
The new configuration requires HP 3D DriveGuard to expand its current drive support to 3 or
more drives. The new design will support a total of 16 internal drives and the total number of
drives is limited by the total number of physical drives that can be attached to a single controller.
Support of 16 drives is more than enough to support new and future internal drive protection
requirements.
HP 3D DriveGuard requires additional information and drive detection in order to provide a more
meaningful support for Solid State Drives (SSD). It is known that an SSD does not have any
moving parts so installing HP 3D DriveGuard does not provide any value to the user unless
his/her system has a second internal drive.
HP3DDG does not attempt to park the heads on an SDD and will ignore Shock Events unless a
second non-SSD HDD is detected in the system.
10. Installation/Setup
The HP3DDG deliverable is provided with SETUP.EXE file to allow for easy installation by end-
users. This deliverable supports the standard MSIEXEC.exe command line parameters and uses
the following version convention: MAJOR.MINOR.BUILD.PASS.
HP3DDG will install on any HP or Compaq branded system which includes a 3D Accelerometer
with the “HPQ6000” Device ID and proper OS support.
HP3DDG supports these installation types: new install, repair, upgrade, and uninstall. Silent
install is also supported for each of the installation types.
HP3DDG does not support downgrade. To downgrade, the user has to uninstall the current
version before installing the older version of HP3DDG. Installation engine should detect this type
of installation (downgrade). If setup is not running in silent mode, a message will be displayed to
tell user that the current version must first be manually un-installed before proceeding to a lower
version. If setup is running in silent mode, setup just stops running, nothing is changed.
“Silent mode”:
No user interface message boxes are displayed even when errors occur.
Command line:
Note: In this case, log file created in the same directory with Setup.exe
“Non-Silent mode”:
A Welcome dialog box is displayed followed by Ready to Install dialog box, then a
Progress dialog box and finally a Finish dialog box after installation is complete. A
Restart Windows dialog box maybe displayed if installation does not update all of the
files. If there are errors during installation, an Error message box is displayed.
“Silent mode”:
Installation runs in repair mode in which files and default settings are recovered if missing
or corrupted. No user interface message boxes are displayed even when errors occur.
Command line:
Note: In this case, log file created in the same directory with Setup.exe
Non-Silent mode:
A maintenance dialog box is displayed with default to repair and the option to remove.
The repair mode allows recovery for missing or corrupted files or registry entries. If there
are errors during installation, an error message box is displayed.
Note: Since HP3DDG 6.0 is a new release dependent on 2013 and newer hardware support
(HPQ6000 device ID) it will not include upgrade support over previous versions of HP3DDG (e.g.,
4.x and 5.x releases).
“Silent mode”:
All files and settings are updated to the new version. No user interface message boxes
are displayed even if errors occur.
The command line is the same as for a New Install.
“Non-Silent mode”:
The GUI is the same as the new install. Program files are updated; however existing
data files and settings are preserved.
“Silent mode”:
The software will not be changed.
“Non-Silent mode”:
A message box indicates that there is a newer version installed on the target system.
Downgrade does not proceed. User must manually un-install the current HP 3D
DriveGuard before re-attempting the install.
10.5 Uninstall:
The Uninstall for this deliverable is provided via the Add/Remove Programs Applet by selecting
“HP 3D DriveGuard”. If there are dependent programs which must be stopped before uninstall
can complete, there will be one or more dialogs confirming stopping, and allowing the uninstall to
be cancelled. A reboot may be required to complete the uninstall.
Note: Uninstall does not remove the HP Mobile Data Protection Sensor (HPMDP) driver.
The installer has a custom action which runs MobCntrTileReg.exe to add these entries for the
HP3DDG Mobility Center Tile:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MobilePC\MobilityCenter
OEMImage
OEMName
TileOrder
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MobilePC\MobilityCenter\Tiles\
DataProtectionTile
GUID
For clarification purposes, the file directory location will be addressed by its corresponding
abbreviation listed below.
< Driver_Dir>=”<TargetDir>\Driver”
The following table lists all files associated with HP3DDG INF install for the HPMDP driver:
Filename Description Directory Location
WHQL Catalog File for 64-bit
hpqaccamd64.cat < Driver_Dir >\
Drivers
WHQL Catalog File for 32-bit
hpqaccx86.cat < Driver_Dir >\
Drivers
Setup Information File for
Accelerometer.inf < Driver_Dir >\
Accelerometer Drivers
Abbr. Language
ar Arabic
cs Czech
da Danish
de German
el Greek
en US English
es Spanish
fi Finnish
fr French
he Hebrew
hu Hungarian
it Italian
ja Japanese
ko Korean
nl Dutch
no Norwegian
pl Polish
pt-BR Brazilian Portuguese
pt-PT Portugal Portuguese
ru Russian
sk Slovakian
sl Slovenian
sv Swedish
tr Turkish
zh-CHS Chinese Simplified (PRC)
zh-TW Chinese Traditional (Taiwan)
Registry
Policy
Keys
HKLM\Software\Policies\
Hewlett-Packard\HP 3D
DriveGuard
Drives:
FreefallProtectionMode
Status: “Disabled”
FALSE
Mobility Center:
Status: “Disabled”
Drives:
Status: “Enabled”
TRUE Mobility Center:
Status: “Enabled”
The System tray icon is enabled by default by adding it to the Run registry key –
HKLM\Software\Microsoft\Windows\CurrentVersion\Run\AccelerometerSysTrayApplet
The default behaviour can be changed to make the system tray icon not visible on start-up by
removing this key.
The following registry keys are created and supported by HP3DDG deliverable at installation time
and are located at: HKLM\SYSTEM\CurrentControlSet\Services\Accelerometer\.
Default Policy
Type UI Element(s)
Key Name Value Control
Description
REG_DWOR
1 N/A No
D
Enum\Count
UNDEFINED / UNKNOWN.
REG_DWOR
1 N/A No
D
Enum\NextInstance
UNDEFINED / UNKNOWN.
REG_DWOR
1 N/A No
D
Parameters\
Controls if the accelerometer interrupts are to be cleared by
ClearInterruptInSoftware
software.
0 = Do not clear interrupts. 1 = Clear interrupts.
REG_DWOR
0 N/A No
Parameters\ D
CreateErrorLogEntries Controls if error log entries should be created.
0 = Do not create log entries. 1 = Create log entries.
REG_DWOR
1 N/A No
Parameters\ D
DisableFastParkOnLidOpen Controls if the “fast park when lid is open” option is enabled or
disabled. 0 = Feature Enabled. 1 = Feature Disabled.
REG_DWOR
1 N/A No
D
Parameters\Enabled Controls if the accelerometer driver should start up with HDD
Freefall protection enabled or disabled. 0 = Start with HDD FFP
Disabled. 1 = Start with HDD FFP Enabled.
REG_DWOR
10 N/A No
D
Parameters\ErrorLogLimit
Defines the size (# of entries) for the Error Log File. Supported
values can be in the range of ?? - ??.
REG_DWOR
20000 N/A No
Parameters\ D
ShockEventDurationLong Defines the default Shock Event Long Duration Time (in
milliseconds). Supported values can be in the range of ?? - ??.
REG_DWOR
2000 N/A No
D
Parameters\
ShockEventDurationShort Defines the default Shock Event Short Duration Time (in
milliseconds). Supported values can be in the range of ?? - ??.
Parameters\ REG_DWOR 1 N/A No
UseStandardModeOnly D
Controls if” standard mode only” should be used to park the heads.
0 = Do not use standard mode (then what is used?). 1 = Use
standard mode (What is this?).
REG_DWOR
1 Control Panel Applet No
D
Settings\SettingsCanChange Controls if the user is allowed to change settings. 0 = User cannot
change settings. 1 = User can change settings.
What settings does this affect?
REG_DWOR
45 N/A No
D
Settings\InstanceIndex
Index to keep track of the users and their settings.
Supported values can be in the range of ?? - ??.
REG_DWOR
0 N/A No
D
Statistics\ShocksDetected
Run-time count of the number of shock events detected since
installation. Supported values can be in the range of 0 - ??.
The following sub-sections contain interface definitions for each of the IOCtls supported by the
Accelerometer Driver:
14.1 IOCTL_ACCELEROMETER_POWER_NOTIFICATION
This IOCtl is used by the caller to notify the driver about a user mode power event.
INPUT DATA
Parameter Value
OS provided value for the power event.
DWORD PowerState Possible values are:
TBD.
OUTPUT DATA
Parameter Value
Possible values are:
1 = Success
BOOL ReturnCode
0 = Operation failed or is pending, check
GetLastError() for more details.
14.2 IOCTL_ACCELEROMETER_USER_LOGON
This IOCtl is used by the caller to notify the driver that a user logon or logoff has occurred.
INPUT DATA
Parameter Value
SID String of the user who is logging On or
LPCWSTR SidString
Off.
OUTPUT DATA
Parameter Value
Possible values are:
1 = Success
BOOL ReturnCode
0 = Operation failed or is pending, check
GetLastError() for more details.
14.3 IOCTL_ACCELEROMETER_GET_XYZ
This IOCtl is used by the caller to get the X, Y, and Z axis motion data from the accelerometer
driver.
INPUT DATA
Parameter Value
OUTPUT DATA
Parameter Value
USHORT PBuffer[0] X axis data
USHORT PBuffer[1] Y axis data
USHORT PBuffer[2] Z axis data
Possible values are:
1 = Success
BOOL ReturnCode
0 = Operation failed or is pending, check
GetLastError() for more details.
14.4 IOCTL_ACCELEROMETER_INITIATE_XYZ_EVENT
This IOCtl is used by the caller to notify the driver to register for X, Y, Z events.
INPUT DATA
Parameter Value
ULONG ulhRegWindowHandle Dialog window handle
OUTPUT DATA
Parameter Value
Possible values are:
1 = Success
BOOL ReturnCode
0 = Operation failed or is pending, check
GetLastError() for more details.
14.5 IOCTL_ACCELEROMETER_TERMINATE_XYZ_EVENT
This IOCtl is used by the caller to notify the driver to unregister for X, Y, Z events.
INPUT DATA
Parameter Value
ULONG ulhRegWindowHandle Dialog window handle
OUTPUT DATA
Parameter Value
Possible values are:
1 = Success
BOOL ReturnCode
0 = Operation failed or is pending, check
GetLastError() for more details.
14.6 IOCTL_ACCELEROMETER_GET_XYZ_EVENT_PROPERTY
This IOCtl is used by the caller to fetch the X, Y, Z data event properties.
INPUT DATA
Parameter Value
ULONG ulOwnerWinHandle Dialog window handle
Possible values:
1 = ACCELEROMETER_EVENT_RATE_FLAG,
Enum
2 =
ACCELEROMETER_XYZ_EVENT_PROPERT
ACCELEROMETER_EVENT_ALLOWED_OSCILLATION_VALUE
Y_FLAGS PropertyFlag
,
3 = ACCELEROMETER_EVENT_AXIS_SETTINGS
ULONG ulXYZSampleDataRatePerSec;
Union Property ULONG ulXYZAllowedOscillationValue;
ULONG ulAxisSettings;
OUTPUT DATA
Parameter Value
ULONG ulXYZSampleDataRatePerSec;
Union Property ULONG ulXYZAllowedOscillationValue;
ULONG ulAxisSettings;
14.7 IOCTL_ACCELEROMETER_SET_XYZ_EVENT_PROPERTY
This IOCtl is used by the caller to set the X, Y, Z data event properties.
INPUT DATA
Parameter Value
ULONG ulOwnerWinHandle Dialog window handle
Possible values:
1 = ACCELEROMETER_EVENT_RATE_FLAG,
Enum
2 =
ACCELEROMETER_XYZ_EVENT_PROPERT
ACCELEROMETER_EVENT_ALLOWED_OSCILLATION_VALUE
Y_FLAGS PropertyFlag
,
3 = ACCELEROMETER_EVENT_AXIS_SETTINGS
ULONG ulXYZSampleDataRatePerSec;
Union Property ULONG ulXYZAllowedOscillationValue;
ULONG ulAxisSettings;
OUTPUT DATA
Parameter Value
Possible values are:
1 = Success
BOOL ReturnCode
0 = Operation failed or is pending, check
GetLastError() for more details.
14.8 IOCTL_ACCELEROMETER_REGISTER_FOR_EVENTS
This IOCtl is used by the caller to notify the driver to register for events.
INPUT DATA
Parameter Value
LIST_ENTRY ListEntry Need details for this item.
ACCELEROMETER_UNREGISTER_ROUTINE
Need details for this item.
UnRegisterRoutine
ACCELEROMETER_WRITELOGEVENT_ROUTINE
Need details for this item.
WriteLogEntryRoutine
ACCELEROMETER_DISKNOTIFICATION_ROUTINE
Need details for this item.
DiskNotificationRoutine
BOOLEAN QueueIrps Need details for this item.
BOOLEAN Disabled Need details for this item.
BOOLEAN StandardMode Need details for this item.
BOOLEAN Reserved Need details for this item.
KEVENT ShockEndEvent Need details for this item.
LONG DisksProtected Need details for this item.
14.9 IOCTL_ACCELEROMETER_PASS_THROUGH
This IOCtl is used by the caller to perform command pass through (send command and data
directly) to the accelerometer device.
INPUT DATA
Parameter Value
Possible values are:
BOOLEAN Write FALSE = Read
TRUE = Write
UCHAR Offset Byte Offset into device address space
Number of Bytes to read / write
ULONG ByteCount
Hardcoded to 1.
Number of Bytes written or read
UCHAR Bytes[1] Hardcoded to 1.
Why is this an input parameter?
OUTPUT DATA
Parameter Value
Byte Offset into device address space
UCHAR Offset
Why is this an output parameter?
Number of Bytes to read / write
ULONG ByteCount Hardcoded to 1.
Why is this an output parameter?
Number of Bytes written or read
UCHAR Bytes[1]
Hardcoded to 1.
Possible values are:
1 = Success
BOOL ReturnCode
0 = Operation failed or is pending, check
GetLastError() for more details.
This function doesn’t seem very inefficient since it’s hardcoded to perform just a 1 byte read or
write. Should we extend this to read or write multiple bytes (1 or more) and reduce the number of
ASL calls to get data?
14.10 IOCTL_ACCELEROMETER_CLEAR_LOG_FILE
This IOCtl is used by the caller to notify the driver to clear the log file. (What log file? I thought
kernel mode drivers could only do file i/o during init?)
INPUT DATA
Parameter Value
OUTPUT DATA
Parameter Value
Possible values are:
1 = Success
BOOL ReturnCode
0 = Operation failed or is pending, check
GetLastError() for more details.
14.11 IOCTL_ACCELEROMETER_SET_PROPERTY
This IOCtl is used by the caller to notify the driver to set an accelerometer property.
INPUT DATA
Parameter Value
Possible values are:
1 = ACCELEROMETER_FLAG_SENSITIVITY
2 = ACCELEROMETER_FLAG_ENABLED
3 = ACCELEROMETER_FLAG_LOGGING
Enum
4 = ACCELEROMETER_FLAG_DURATION_LONG
ACCELEROMETER_PROPERTY_FLAGS
5 = ACCELEROMETER_FLAG_DURATION_SHORT
PropertyFlag
6 = ACCELEROMETER_FLAG_PROTECTION
7 = ACCELEROMETER_FLAG_SETTINGS_CAN_CHANGE
8 = ACCELEROMETER_FLAG_RESERVED
9 = ???
10 = ACCELEROMETER_FLAG_PROTECTION_EX
ULONG Sensitivity;
BOOLEAN Enabled;
BOOLEAN Logging;
Union Property BOOLEAN SettingsCanChange;
ULONG Duration;
PROTECTION_INFO ProtectionCounts;
PROTECTION_INFO_EX MultiDriveProtection;
OUTPUT DATA
Parameter Value
Possible values are:
1 = Success
BOOL ReturnCode
0 = Operation failed or is pending, check
GetLastError() for more details.
14.12 IOCTL_ACCELEROMETER_GET_PROPERTY
This IOCtl is used by the caller to notify the driver to get an accelerometer property.
INPUT DATA
Parameter Value
Possible values are:
1 = ACCELEROMETER_FLAG_SENSITIVITY
2 = ACCELEROMETER_FLAG_ENABLED
3 = ACCELEROMETER_FLAG_LOGGING
Enum
4 = ACCELEROMETER_FLAG_DURATION_LONG
ACCELEROMETER_PROPERTY_FLAGS
5 = ACCELEROMETER_FLAG_DURATION_SHORT
PropertyFlag
6 = ACCELEROMETER_FLAG_PROTECTION
7 = ACCELEROMETER_FLAG_SETTINGS_CAN_CHANGE
8 = ACCELEROMETER_FLAG_RESERVED
9 = ???
10 = ACCELEROMETER_FLAG_PROTECTION_EX
ULONG Sensitivity;
BOOLEAN Enabled;
BOOLEAN Logging;
Union Property BOOLEAN SettingsCanChange;
ULONG Duration;
PROTECTION_INFO ProtectionCounts;
PROTECTION_INFO_EX MultiDriveProtection;
OUTPUT DATA
Parameter Value
ULONG Sensitivity;
BOOLEAN Enabled;
BOOLEAN Logging;
Union Property BOOLEAN SettingsCanChange;
ULONG Duration;
PROTECTION_INFO ProtectionCounts;
PROTECTION_INFO_EX MultiDriveProtection;
Possible values are:
1 = Success
BOOL ReturnCode
0 = Operation failed or is pending, check
GetLastError() for more details.
Each method is described in detail outlining its use and expected input/output data values.
Missing parameter or data values for either INPUT or OUTPUT must be interpreted as no
input/output is required or expected.
15.1 CLRI_METHOD
INPUT DATA
Parameter Value
15.2 ALRD_METHOD
This method is used to read data from accelerometer. Offset value determines which data buffer
to read.
INPUT DATA
Parameter Value
ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER_SIGNATU
ULONG Signature
RE
UCHAR MthodName[4] “ALRD”
Offset of any device register per device
ULONG IntegerArgument
datasheet
OUTPUT DATA
Parameter Value
ULONG Signature ACPI_EVAL_OUTPUT_BUFFER_SIGNATURE
ULONG Length Output buffer size
ULONG Count 1
USHORT Argument[0].Type ACPI_METHOD_ARGUMENT_INTEGER
USHORT Argument[0].DataLength sizeof (UCHAR)
ULONG Argument[0].Data[0] Data
15.3 ALED_METHOD
INPUT DATA
Parameter Value
ULONG Signature ACPI_EVAL_INPUT_BUFFER_COMPLEX_SIGNATURE
UCHAR MethodName[4] “ALED”
ULONG ArgumentCount 1
USHORT Argument[0].Type ACPI_METHOD_ARGUMENT_INTEGER
USHORT Argument[0].DataLength sizeof (UCHAR)
0 – Turn OFF LED
ULONG Argument[0].Argument
1 – Turn ON LED
OUTPUT DATA
Parameter Value
15.4 ALID_METHOD
INPUT DATA
Parameter Value
ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER_SIGNATU
ULONG Signature
RE
UCHAR MthodName[4] “ALID”
ULONG IntegerArgument Offset – 0x00
OUTPUT DATA
Parameter Value
ULONG Signature ACPI_EVAL_OUTPUT_BUFFER_SIGNATURE
ULONG Length Output buffer size
ULONG Count 1
USHORT Argument[0].Type ACPI_METHOD_ARGUMENT_INTEGER
USHORT Argument[0].DataLength sizeof (UCHAR)
0 – Lid Close
ULONG Argument[0].Data[0]
1 – Lid Open
15.5 ADSN_METHOD
This method reports a hard drive Signature. The output buffer must be big enough to store the
hard drive signature data.
INPUT DATA
Parameter Value
ULONG Signature ACPI_EVAL_INPUT_BUFFER_SIGNATURE
UCHAR MethodName[4] “ADSN”
OUTPUT DATA
Parameter Value
ULONG Signature ACPI_EVAL_OUTPUT_BUFFER_SIGNATURE
ULONG Length Output buffer size
ULONG Count 1
USHORT Argument[0].Type ACPI_METHOD_ARGUMENT_BUFFER
USHORT Argument[0].DataLength sizeof (UCHAR)* N
ULONG Argument[0].Data[N] Drive Signature – N Bytes
15.6 ALWR_METHOD
This method is used to write data to accelerometer. Offset value determines where the data
buffer is written to.
INPUT DATA
Parameter Value
ULONG Signature ACPI_EVAL_INPUT_BUFFER_COMPLEX_SIGNATURE
UCHAR MethodName[4] “ALWR”
ULONG ArgumentCount 2
USHORT Argument[0].Type ACPI_METHOD_ARGUMENT_INTEGER
USHORT Argument[0].DataLength sizeof (UCHAR)
Offset of any device register per device
ULONG Argument[0].Data[N]
datasheet
USHORT Argument[1].Type ACPI_METHOD_ARGUMENT_INTEGER
USHORT Argument[1].DataLength sizeof (UCHAR)
ULONG Argument[1].Data[N] Data
OUTPUT DATA
Parameter Value