How to ask questions on the Microsoft Forums
There are certain rules when you use a community driven forum to get answers to your questions. The Microsoft forums that deal with Platform Builder and Windows CE development are not actively monitored by Microsoft. The people answering your questions are your peers; volunteers who spend their time researching your problem because they find it interesting and want to learn more.
The people that post most answers are in many cases MVPs, Most Valuable Professionals, a status awarded by Microsoft to people who help out the community by running user groups, answering questions in forums, etc.
It is important to note that nobody is being paid to answer questions. They're all volunteers.
Now that you know this, you also know that there is no guarantee to get an answer. The most common reasons for not getting an answer are:
- Your question has been answered in the forum in the past
- You didn't supply enough information
- You keep on posting the same question over and over
- You demand a quick answer
- You're asking your question in the wrong forum
Search before you ask!
"I call this function and it doesn't work, please help" is useless.
If nobody answered your question after a couple of days it is because you didn't read this blog post on how to ask questions or simply because nobody knows an answer. If you want to "reactivate" your question, post a reply to your own question with something like "Anybody? Please?" and supply any other relevant information you may have gathered over the past few days. Do not start another thread for the same question. It is annoying and will result in people ignoring you.
Demanding things from people you do not pay any money is generally counterproductive.
Before asking a question make sure you read at least some other questions and answers in the forum so you know this is the right forum. The forum title usually helps to determine this as well... ;)
Note that the above says nothing about "stupid" questions. That is because stupid questions do not exist! Everybody on the forums started with Windows CE/Embedded Compact at some point, and everybody struggled with the (sometimes) steep learning curve in the beginning. We know where you are coming from so don't be shy and ask, but before you do, take note of the following "rules" that will increase your chances in getting a useful answer:
- Read MSDN Library
- Before asking a question, search the forums for an answer
- Subscribe to blogs
This sounds logical, but you'd be surprised how many questions are asked that can be easily found in MSDN. Click here for all the Windows Embedded documentation and use the search box in the top left hand corner to search. When you use search, make sure you check if the description you see is for "desktop" Windows, or for Windows Embedded. As you know, Windows CE/Embedded Compact uses a subset of the big Win32 API and some API parameters have different meaning in CE/WEC, so be careful there! That said, sometimes the big Win32 API description lists more information that also applies to and is still useful for CE/WEC. First thing to do when you encounter a problem with an API is to open the description of that API in MSDN, check all the parameters and read the remarks section. The remarks section has useful information about error conditions and special requisites that may be needed for the API. If you encounter a problem in the documentation, or missing information or something else wrong with the documentation make sure to rate the topic and/or add the missing information using the "Community Content add" link. The people at Microsoft responsible for the documentation really read this feedback and will update the documentation where necessary. Help make the documentation better!
If you can't find an answer in the forums you may also try to search the newsgroups archives (they were used before the forums and contain years and years of information about Windows CE):
Use Google Group Search to search the newsgroups. Type some keywords in the "with all of the words" box, then in the "Return only messages from the group at this location" box type *windowsce* to search all newsgroups related to Windows CE. I also usually set the form to "Return 100 messages" and "Sort by Date" so I get the latest answers on the top of the list.
Most MVPs and some people within the Microsoft Product Team have blogs. Blog posts usually deal with a FAQoaF (a Frequently Asked Question on a Forum ;o), like the "What to build when" post on this blog. Some of the blogs that I subscribe to are the Windows CE Base Team Blog, Mike Hall's Windows Embedded Blog, the Windows Mobile Team Blog and of course the GuruCE Blog.
If your search did not return a useful answer you can post a question to the forum, but before you do: try a debug build, get KITL going and analyse the debug messages. If you can't build a debug kernel or get KITL going it will be difficult to get to the root of the problem, but not always. If you can't get KITL or a debug build going list that in your question!
Information that should be in your question:
- OS version / hardware / board / kernel / updates
- Specific Component
- Big picture
- What did you try
- Detailed error messages
- Detailed debug messages
- Be polite
- Proof read / Spell check
- MSN/SMS/Text Generation
List the OS version, what hardware, what processor, what board, what BSP, debug or retail kernel, KITL yes/no, and what updates (QFEs) you installed
If you have problems with an existing driver or a specific component; tell us! Saying "I've got a problem with the touch driver" is useless, because there is no such thing as the touch driver. If you made the driver; tell us. If you cloned a driver, tell us which driver you cloned (including the original path you cloned from). If you are having problems with a standard driver, tell us exactly which one including the complete path. Example: "I've got problems with the MainstoneIII touch driver located in C:\WINCE600\PLATFORM\MAINSTONEIII\SRC\DRIVERS\TOUCH"
Explain what you want to accomplish, not how you want to accomplish it. There may be better ways to get where you want. Describe the bigger picture.
List the things you tried, the tests you performed and why it didn't work. If people ask you to perform another test: do it! Don't expect an answer if you are unwilling to follow advice that may lead to the solution of your problem. Also, if your search found a solution to your problem but somehow it didn't work, list that too.
If you got an error, list it. If an API returns an error, get the error number by calling GetLastError() and list it.
Post the debug message lines that you think are relevant to the problem. Do not post 6000 lines of debug log because nobody will want to read through all of that.
Don't demand an answer. Remember nobody is being paid to answer your questions. If you want paid support, buy support from Microsoft or one of the Embedded Partners, like GuruCE. Same goes for people answering questions; be polite, remember your own struggles when you started with CE.
We understand English is not the language the entire world speaks fluently; it's not my native language either. Spelling mistakes are common and not a problem at all, but before you post; at least read back what you wrote and make sure it is understandable. Don't just check for funny sentences and spelling mistakes, make sure there is enough information in the message for other people to understand your problem. The quality of the answer can only be as good as the quality of the question!
Remember you are not paying per-byte on the forums so please refrain from trying to shorten your messages. Do not use "ur" instead of "you're" or "2" instead of "to". It makes the message unreadable/annoying. R3m3mb3r typing l1k3 th1s do3s n0t m@k3 u 3733T, 1t 1ly m@k3$ u l00k st00p1d!
If you follow these rules (that are valid for any community driven forum) then there are no stupid questions and you will most certainly get an answer from one of the many volunteers answering questions in the forums.
Here's a template you can use to ask questions in the Windows Embedded Compact forums:
Hardware..: [Custom board / Device Solutions Topaz / etc]
Processor.: [iMX25 / PXA320 / etc]
BSP.......: [Custom BSP based on Mainstone III / GuruCE Topaz BSP / etc]
Kernel....: [Debug / Retail / Checked] [KITL enabled/disabled]
I am trying to [explain what you are trying to accomplish]
I am using [list the related component/driver including the full path]
I've tried to [explain what you have tried so far, how you tested, etc]
I searched the web and the forums and found [this/nothing]:
[url to something relevant]
I've tried to implement that but it didn't solve my problem because [explain why not]
Here's the code I use:
[show a code snippet if relevant]
The call returns [whatever the call returns] and GetLastError() returns [whatever error it returns]
The debug output window shows this:
[list a couple of lines around the debug log lines that you think are relevant]
I would much appreciate any pointers you can give me.
Two final requests: When someone answers your question be sure to mark that reply as the answer. It is just a token of your appreciation and recognition for that person. Also: Return the favor!
Once you find a solution to your problem, either by yourself or because of a tip from somebody on the forums, please spend 5 minutes to write it down and post it as a reply to your original question. Your solution may save somebody a lot of time and frustration in the future.
Why not become part of the community? Don't be afraid to answer questions if you think you know the answer!