|
NEW!!! TOOOO Many results in general search?!! Try this customized search engine for searching online books
|
|
August 28th Chat Transcript Posted Live
For those of you that were too busy working (or maybe sleeping due to the timezone difference!) to join us for our latest MSDN chat session on August 28th, you can now read the transcript here: http://msdn.microsoft.com/en-us/chats/cc896558.aspx. Thank you to everyone that was able to make it to the chat and especially to those of you that asked questions and provided feedback! Most questions asked were about the Windows Embedded Standard CTP, but we also got some standard XPe questions as well. Twenty folks from the engineering and marketing teams were on hand and answered nearly 40 questions! You can read through the transcript to see their answers. - Shayna  |
Internet Connected Set Top Display
A companion device to the TV, Anobar is one of the first FED based devices that has been prototyped. The long, thin 640 x 94-pixel screen serves as a ticker displaying real-time information pulled in from the internet and even has a live chat about what is currently on TV. Anodos CEO Hideki Mori says the prototype device is meant for those watching television who want to catch up on information that would otherwise require a computer. Under the hoods the show is run by Embedded XP. Read More at http://www.engadget.com/tag/anobar -Sampath
 |
|
|
A Lesson in Multi-Threaded SQL Programming
I don't think there's a developer alive today who hasn't, at one time or another, struggled with a bug that, no matter how much you review your code and decide the code is correct, trace through it and debug it, you just can't figure it out. A bug so insidious that you just swear there's gotta be something horribly wrong with your operating system, your debugger, your hardware, etc. One where you're about ready to tear your hair out, give up and completely redesign the entire program to work around it... then by sheer dumb luck or inspiration, you stumble upon the answer and you can't resist the urge to thwack yourself in the forehead and go "DUH!" I ran into one of these on my quest to develop the ultimate build automation solution. I slaved away until 9:30pm on a Friday night trying to figure out why my very simple SQL queries were getting unpredictable results. "SELECT COUNT(*) FROM table WHERE condition", right? Should return a number greater than or equal to zero, and in my particular test case, I should always get 1 as a result. But my query was sometimes returning an empty result set, and at other times was getting 0 or 2 as a response. Whenever I tried the query manually in Management Studio, I got the correct result, so there's no way this should have NOT worked in the program. I beat my head against it for hours, even enlisting the help of another dev to look over my shoulder and see if he could spot anything obvious. Everything I tried failed to fix the problem, but moreover, I couldn't actually see anything wrong with my code. Additionally, the debugger was telling me that my program was throwing occasional InvalidOperationExceptions and FormatExceptions, neither of which should ever happen with all the try/catch blocks and safety checking code I had in place. Definitely some odd behavior here. Here's where I need to explain a little more about how the program is structured: With its current (and admittedly inefficient) structure, my build backend service runs two separate timers at different times: One timer runs every ten seconds to query for new jobs and send a heartbeat to the database that allows the frontend to notify users if a backend has gone down for some reason. Another timer runs more frequently while a job is being processed to see if a flag has been set by the frontend stating that the job should be aborted. While not true multi-threaded programming, this event-driven system has the effect of being multi-threaded, and the "main" thread would take care of reading job data and updating the job's status periodically when individual tasks finished processing. All of these events were running on a single SQL connection using objects in the System.Data.SqlClient namespace (.NET 2.0). And it didn't hit me until I left for the night and was on my way home what the problem was. I realized that my empty result set was the correct response to the "Check for Abort" query, and a value of 2 would be returned when I'd query for the current status of the job. It turned out that the multi-threading issue was causing the returns for my queries to get mixed up! None of the MSDN documentation I'd come across had covered this particular aspect – either there's a genuine .NET bug I discovered here, or everyone assumes that you'll only ever use a SQL connection in a single-threaded app. But once I'd figured out how the buffers were getting crossed, I logged back in as soon as I got home and gave each "thread" its own connection, to ensure that no connection would ever have to serve more than one purpose and would only ever process things linearly. Voila, it worked! Now, not only was I getting the correct results to every query, but the debugger no longer reported ANY exceptions being thrown, ANYWHERE in the program. Usually, these "Duh" moments come when you realize you have a misplaced comma or an order-of-operations issue, or an off-by-one counting problem, that sort of thing. In this case, it was slightly more complicated, but something I should have figured out much sooner considering this wasn't my first foray into multi-threaded programming. (The program does have actual background threads as well, but they weren't affected by this particular problem.) So, if you ever find yourself needing to run SQL queries and commands from multiple threads, don't try to share a connection between them. One thread per connection. - Matt Technorati Tags: XPe, Embedded, SQL |
Tip Of The Day: Disable Software-enumerated Devices
If you run TAP.exe on your target hardware you will get every device listed in the registry. Some of these devices are not real devices at all, but are software-enumerated devices and are very rarely (if ever) needed on a runtime image. Disabling or deleting these software-enumerated devices will save on footprint because their dependencies unnecessary files will not be added to your image, and neither will the chain of dependencies for each of these devices. To get the benefit, you need to remove them from the configuration before you ever through the check dependency phase. You can do this in two ways:
- Manually remove them from your configuration in Target Designer
- Create a custom component from your pmq in Component Designer, then either
- remove the components for the software-enumerated devices
- disable the components for the software-enumerated devices. If you add a membership on the Selector Prototype macro, you can add these components back if needed through the configUI of the component in Target Designer.
The list of software-enumerated devices include:
- ACPI Fixed Feature Button - ACPI Sleep Button - Audio Codecs - Communications Port - Creative AudioPCI (ES1371,ES1373) (WDM) - Direct Parallel - Game Port for Creative - ISAPNP Read Data Port - Legacy Audio Drivers - Legacy Video Capture Devices - Microsoft Kernel Acoustic Echo Canceller - Microsoft Kernel Audio Splitter - Microsoft Kernel DLS Synthesizer - Microsoft Kernel DRM Audio Descrambler - Microsoft Kernel GS Wavetable Synthesizer - Microsoft Kernel System Audio Device - Microsoft Kernel Wave Audio Mixer - Microsoft Streaming Clock Proxy - Microsoft Streaming Quality Manager Proxy - Microsoft Streaming Service Proxy - Microsoft WINMM WDM Audio Compatibility Driver - Printer Port Logical Interface - RAS Async Adapter - System Speaker - Terminal Server Device Redirector - Terminal Server Keyboard Driver - Terminal Server Mouse Driver - Video Codecs - WAN Miniport (IP) - WAN Miniport (L2TP) - WAN Miniport (PPPOE) - WAN Miniport (PPTP)
Lynda
Technorati Tags: XPe, Componentization  |
Last Chance to Enter to Win a Mobile Memory Mouse!
Hurry up and go to the Windows Embedded Standard Connect website and download the CTP Refresh in order to be automatically entered for a chance to win a Microsoft Mobile Memory Mouse 8000! The contest runs through tomorrow, and we will be randomly selecting 10 winners to receive this cool new piece of hardware from Microsoft. For more complete details on the contest read my previous blog post here, and read the official contest rules here. If you have problems accessing the download link, it is likely due to the fact that you haven't registered for our Community Technology Preview page previously. Simply follow these steps: - Go to http://connect.microsoft.com
- Sign in with a Windows Live ID account and complete the Connect registration if you haven't done so before
- Click on Connection Directory and search for Windows Embedded Standard
- Click Apply to our program, and you will be taken directly to our site to download
Happy downloading! - Shayna  |
Reminder- MSDN Chat Tomorrow August 28th (10am PST)
On August 12th, 2008 the Embedded Windows team released a Community Technology Preview (CTP) Refresh of Windows® Embedded Standard as well as a CTP of Service Pack 3 (SP3) for Windows® XP Embedded! These can be downloaded from https://connect.microsoft.com/windowsembedded. Please join the live chat with the Embedded Windows product team on August 28th at 10am (Pacific Time)- all the team experts will be on hand to answer questions and respond to comments on these two releases. You can join the chat at http://msdn.microsoft.com/en-us/chats/default.aspx. Hope to see you online!  |
Tip of the Day: Moving or Renaming Your Page File
Occasionally, you may want to rename the page file from Pagefile.sys to Newfilename.sys, where Newfilename is the name you want to give to the renamed file.
Or, you may want to move the page file to another partition that is not protected by EWF.
To rename or move the page file, make the appropriate changes to the following registry key:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management
Value: PagingFiles
Type: REG_MULT_SZ
Data: C:\pagefile.sys 150 500
In that Data field, you can adjust the name of the page file, its location, and its minimum and maximum values.
For example, if you decide that you want the page file to reside on drive D, to be called "Oldpagefile.sys", have a minimum value of 3 MB, and a maximum value of 2 GB, the Data field of the key would look similar to the following:
Data: D:\oldpagefile.sys 3 2000
You can make these changes from within the runtime itself if you have the registry tools installed. Or you can load the System hive offline with Regedit.exe from a full build of Windows, make your changes, and then unload the hive.
- Mark
Technorati Tags: XPe, Embedded |
|
|
Tip of the Day: Annotate Your Source Code
To get the most from using static analysis tool PREfast, you should add annotations to your source code. While this might sound like a difficult thing to do, it’s really not. The Visual Studio 2008 SAL documentation on MSDN has been rewritten to present the annotations as a series of choices or, in other words, a “cheat sheet.” This updated documentation doesn’t, however, give any significant examples; for that you have to look back a version to the Visual Studio 2005 SAL documentation. For more examples, you can also peruse through the header files provided with your compiler.
- Jim
Technorati Tags: XPe, Embedded |
Tip of the Day: Moving Event Viewer logs to an unprotected volume
This tip is applicable to Enhanced Write Filter (EWF-RAM) users. To move Event Viewer logs to a volume unprotected by EWF, modify the following three registry keys as shown in the following example. The example uses drive D as the unprotected volume.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application
File=D:\\AppEvent.evt
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Security
File=D:\\SecEvent.evt
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\System
File=D:\\SysEvent.evt
- Mark
Technorati Tags: XPe,Embedded  |
Tip of the Day: Analyze Your Code
These days there are some great tools available for improving the quality of your code. Two such tools available from Microsoft are PREfast and FxCop. These tools are static analysis tools which look for provably wrong coding patterns. PREfast analyzes C/C++ source code and FxCop analyzes managed code binaries. Both tools are shipped with the Visual Studio Team Systems products.
And PREfast is also shipped with the Windows SDK. But before you install the SDK and start looking for an “exe” for PREfast, let me clarify that it’s actually implemented as the /analyze compiler switch (which leads one to wonder why doesn’t this ship with all VS products…).
If you’re wondering if it’s worth your effort to use these tools, I can attest from personal experience that they do find significant bugs which would be difficult to find without them. If your still not sold (hey, who would on my word?) I suggest you read this great blog article written by the VS C++ team on PREfast and SAL (more to come on that later).
- Jim
Technorati Tags: XPe, Embedded |
August 2008 Security Updates Are Now Available
The August 2008 Windows XP Embedded Security Updates are now available on the Mobile & Embedded Communications Extranet (ECE) for Microsoft® Windows® XP Embedded Service Pack 2, Feature Pack 2007, and/or Update Rollup 1.0. The downloads are cumulative and include updates for the Desktop QFE Installer (DQI) Tool and the Component Database. The following updates are included in this release – please see the ECE for more details: · KB 951072 - August 2008 cumulative time zone update for Microsoft Windows operating systems · KB 953838 - Cumulative Security Update for Internet Explorer. · KB 952954 - Vulnerability in Microsoft Windows Image Color Management System Could Allow Remote Code Execution. · KB 951066 - Security Update for Outlook Express and Windows Mail. · KB 950974 - Vulnerabilities in Event System Could Allow Remote Code Execution. · KB 946648 - Vulnerability in Windows Messenger Could Allow Information Disclosure. · KB 953839 - Cumulative Security Update of ActiveX Kill Bits. · KB 951376 - Vulnerability in Bluetooth Stack Could Allow Remote Code Execution. · KB 951748 - Vulnerabilities in DNS Could Allow Spoofing. · KB 944338 - Vulnerability in VBScript and JScript Scripting Engines Could Allow Remote Code Execution. The August 2008 Windows XP Embedded Security Updates are available at the following link on the ECE: https://ece.partners.extranet.microsoft.com/ece/ProductSupplements/DownloadCenter/Embedded/XPE/XPEMonthlyUpdates/DistOEM-Aug2008XPEmbedSecurUpdat.htm If you have questions on accessing the ECE, please email MS Mobile & Embedded Communications Feedback & Support, ECE@microsoft.com. -Katy Technorati Tags: Xpe, Embedded |
Tip of the day: Read an Art Book
Here’s my favorite tip – get your hands on a copy of Glenford Myers’ The Art of Software Testing and read it. You say that you’re not a tester, but a software engineer? All the more reason to read the book! Not only will it help you write better code it will help you understand how to better verify your code before you, um, turn it over for testing.
A few additional points about Glenford’s book – it’s very expensive so I would suggest that you look for a used copy or borrow a copy from your local library system. Also, I feel that there are some sections of the book (e.g. the section on cause-effect graphing) which are less valuable and can be skimmed over. Finally, the second edition of the book added pages without, in my opinion, adding significant value while at the same time doing away with the super cool 70’s dust cover <grin>.
- Jim
Technorati Tags: XPe, Embedded |
|
|
Get Ready for the “Next Generation” MSDN Chat on Aug 28th
On August 12th, 2008 the Embedded Windows team released a Community Technology Preview (CTP) Refresh of Windows® Embedded Standard as well as a CTP of Service Pack 3 (SP3) for Windows® XP Embedded! These can be downloaded from https://connect.microsoft.com/windowsembedded. Please join the live chat with the Embedded Windows product team on August 28th at 10am (PST). All the team experts will be on hand to answer questions and respond to comments on these two releases. You can join the chat at http://msdn.microsoft.com/en-us/chats/default.aspx. Hope to see you online!  |
Win a Microsoft Mobile Memory Mouse 8000
Today we announced a new contest on the Windows Embedded Standard Connect Website. If you download the Windows Embedded Standard CTP Refresh between 8/18/08 and 8/29/08, you can be entered for a chance to win a Microsoft Mobile Memory Mouse 8000 as pictured below. We will be giving away ten (10) of these prizes. You can read the full sweepstakes rules here.  This comfortable, ground-breaking mouse is the most advanced mobility tool available. Including 1 gigabyte (GB) of flash memory in the transceiver frees USB ports and lets you easily back up and transfer files. You can even continue to work while your mouse is charging. Features include: - Transceiver with 1 GB Flash Memory
- 2.4 GHz Wireless Technology
- USB Rechargeable with Magnetic Connectors
- High Definition Laser Technology
- Battery Life Indicator
So make sure you download the CTP Refresh soon to get your chance to win! - Shayna  |
Tip of the Day: When the Time Bomb Ticks
For evaluation runtimes, the countdown to expiration begins when the runtime goes through the First Boot Agent phase.
For the evaluation testing, it's important that the machine being used has its CMOS clock set to the correct date. If the runtime 'sees' the clock move forward several months suddenly, you may find your runtime expiring much sooner than expected. This sudden change in date may occur if you transfer the runtime to a new device that has a correct date or if you try to fix the date manually in that original machine's CMOS.
If your evaluation runtime expires, your only course of action is to re-run the original image through FBA again.
- Andy
Technorati Tags: XPe, Embedded |
|
|
|
ONLINE FORUM
|
|
|