Many broad strokes of the hardware requirements have already been disclosed officially. Microsoft says the requirements that all Windows Phone 7 smartphones must meet are based on market research and feedback from vendors. Intel may want to conquer the smartphone market with Moorestown, but Windows Phone 7 makes high-performance ARM processors compulsory, so Intel's not invited. Instead, the Qualcomm Snapdragon family and Texas Instruments OMAP meet Microsoft's demands.
Windows Phones must have back, home, and search buttons, two volume buttons, a power off button and a camera button. A multitouch touchscreen is also required. Surprisingly, Bluetooth 2.1 + EDR is the latest version mentioned (versions 3.0 and 4.0 are missing), though this might only be indicative of the minimum requirement.
Updates are distributed through Microsoft Update, meaning users will no longer have to wait for providers and manufacturers to ship a new ROM like they did with previous versions of Windows Mobile (or more commonly, didn't; most providers and manufacturers barely bothered).
Providers will also be able to push their own customizations via Microsoft Update. The feature is called Phone Update and operates via two channels: over-the-air (OTA) and USB. Minor updates will be delivered OTA, with major updates installed via USB tethering, using the Zune software installed on a PC.
Windows Phone 7 is built on top of Windows Embedded CE 6.0, and so a
lot of the low-level aspects of its design are already documented.
Relative to the Windows CE 5 kernel used in Windows Mobile 6.x, Windows
CE 6 is a lot more similar in design to a regular desktop OS. Given
enough memory, Windows CE 6 can run up to 32,000 or so processes, in
contrast to the 32 supported in its predecessor (31, in fact, as the
32nd process is the kernel itself).
The memory management of the
new OS is substantially different. The 32-bit memory space is split into
two, a 2GB upper part dedicated to the kernel, and a 2GB lower part
dedicated to non-kernel code. This lower part is then split into two 1GB
parts. The upper 1GB part is used for various shared structures like
system libraries; the lower 1GB part is for use by programs for whatever
they need. Each process gets its own copy of the lower 2GB part, so
each process can allocate up to 1GB of memory.
Read the full documents on the external link...