Copyright (C) 2006 The Android Open Source Project

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

In order to build a directory with a SOURCES file you will need to install
the Windows Driver Kit, which can be obtained from Microsoft:

Windows Driver Kit Version 7.1.0
https://www.microsoft.com/en-us/download/details.aspx?id=11800
md5: 8fe981a1706d43ad34bda496e6558f94
sha1: de6abdb8eb4e08942add4aa270c763ed4e3d8242

This old version is used because it can build for Windows Vista (WDK 8.1
cannot), it includes compilers (so it doesn't require Visual Studio), and it is
probably not too far from the WDK that this code was originally built with, so
it should be less risky.

When installing the WDK, uncheck `Device Simulation Framework' because it is
unnecessary and it installs a kernel-mode driver that we don't need.

Assuming that WDK is installed, you need to set one of the WDK's build
environments (Start Menu -> Windows Driver Kits -> x86 Free Build Environment;
choose the one for the oldest version of Windows you want to support),
"cd" back into this directory, and execute "build -cbeEIFZ" to clean and rebuild
this project, or you can execute "build -befEIF" to do a minimal build.

When you're done with the WDK build environment, don't forget to right-click the
OACR icon (in the lower-right notification area of the taskbar) and choose
`Close'.
