Sharing Events Between Kernel and User

Wednesday, September 12, 2012

I'm writing this because the WDK documentation left things out. This API: IoCreateSynchronizationEvent says that you have two options to share an Event with user-mode application: 1. The process creates an event and sends the handle to the driver (more secure) and 2. Use named events. The documentation says that named evevnts require "\\BaseNamedObjects\Xxx" on the driver's side and "xxx" on the process side. This should be "\BaseNamedObjects\Xxx" with one back-slash. Your code should look like this "\\BaseNamedObjects\\Xxx" and not like this: "\\\\BaseNamedObjects\\Xxx" Also I found that the user space process created the Named Event under "\Sessions\1\BaseNamedObjects\Xxx" where 1 is the Session ID and Xxx is the...
tags: ,
no comments

פיתוח אלגוריתמים

Sunday, March 11, 2012

בפוסט קודם דיברתי על מתכנתי אמבדד ופיתוח דרייברים. בסוף הפוסט הזכרתי אלגוריתמיקה כהיתרון התחרותי וההגנה הטובה ביותר מפני העתקה. אם יש לך אלגוריתם ייחודי לא צריך פטנט. הרי בכל מקרה פטנט צריך לרשום בהרבה מקומות בעולם, ויש מדינות חשובות שלא ממש יתיחסו אליו (מזרח). בנוסף חברה שאין לה משאבים אינסופיים כנראה לא תצליח להתמודד בבתי משפט מול חברות ענק על מנת להגן על הפטנטים שלה. הפתרון הוא אלגוריתם. אלגוריתם הוא בעצם תכנון קוד. לא משנה באיזו שפה הוא כתוב ולא צריך להוכיח שהמצאת משהו חדש. מה שחשוב הוא הידע איך לגרום למחשב לקחת מידע מסויים ולחלץ או לחשב מידע אחר, למשל...

המרחק בין מתכנת למתכנת אמבדד

Wednesday, February 29, 2012

קודם כל חשוב לומר שאין קשר לסביבת הפיתוח, לתשתיות, לאוסף הכלים וה- API. שום קשר. בעולם מיקרוסופט יש לנו מספר מערכות הפעלה שונות שעליהן מפתחים, לרוב בעזרת Visual Studio: 1. Win32 API, User-Mode, C\++, C#, MFC, Java, וכד' 2. שרתים, Asp.Net, HPC, וכד' 3. Windows CE 4. Windows NT Kernel 5. WebBrowser, JavaScript, AJAX, וכד' למי ששואל את עצמו, הגרסאות השונות של Windows Embedded הן בעצם דרך לבנות Desktop או Server. יש בישראל הרבה מתכנתים מכל הסוגים שהזכרתי. בדרך כלל יהיה קל יותר למתכנת מקבוצה מסויימת לפתח שיחה עם מתכנת מאותה הקבוצה. מדובר בקהילה ובתרבות וכנראה שדווקא זה כן קשור לסביבת העבודה ואופי המוצרים. מי שמכיר אותי יודע...

סדרת הרצאות מצולמות בנושא מחשוב מקבילי בחסות אינטל

Thursday, February 23, 2012

מדובר בשישה פרקים באורכים משתנים, כולם באנגלית, שצולמו לפני מספר חודשים וישוחררו לצפיה כל מספר שבועות. הסדרה מתחילה בבסיס של מחשוב מקבילי ומסבירה למה מחשוב מקבילי ממש קל, וממשיכה דרך ארכיטקטורה ומודלים, ועד טכנולוגיות מתקדמות דוגמת AVX (יכולת DSP של X86). הוידאו הראשון יפורסם בימים הקרובים באתר של אינטל העולמית. למידע נוסף: http://software.intel.com/en-us/blogs/2012/02/23/pre-release-parallel-programming-and-architecture-video-series/ אסף

Windows Embedded Compact 7 Book

Saturday, October 15, 2011

If you are interested in Windows Embedded Compact 7 you should take a look at Avi Kcholi's new book "Pro Windows Embedded Compact 7: Producing Device Drivers". Avi is the number one expert in Israel and is one of the leading figures world wide. Soon to be published, you can already find it on Amazon: http://www.amazon.com/Pro-Windows-Embedded-Compact-Producing/dp/1430241799/ Enjoy! Asaf
tags: , ,
no comments

WDK setup on Windows Embedded "unknown trust provider"

Thursday, February 10, 2011

Hi All, I tried istalling my WDF based driver on Windows Embedded Standard 2009 and it failed. Dependency walker showed that my driver is missing the reference wdfldr.sys which is installed automatically with WDF's co-installer. Device Manager shows an unknown device under my device class and setup API identifies that a device with the class is installed in the system. When I tried to manually update the driver in Device Manager I got the error saying that the installation failed with the error "unknown trust provider". The solution was to add cryptographic services. I didn't verify what was missing, just added all...
no comments

Graphedit Error 0x8007048f: Device is not connected

Wednesday, February 9, 2011

I got this error on Graph Edit: "This graph can't play. The device is not connected. (Return code: 0x8007048f)" when I tried to open a USB capture device (VC600). The solution was to add the filter WDM Crossbar under the category WDM Streaming Crossbar, then render it's video output so that it is the input to the capture card.  Hope this helps.
tags: , ,
one comment

Verify Installation of a custom device using C#

Tuesday, March 9, 2010

Hi all, Using my WinUSB C# component, I also needed to automatically install the driver if it is not already installed. The INF file defines a new device class by its GUID. This means that the class does not exist on the machine if the device is not installed. Here is the code: internal static extern bool SetupDiGetClassDescription(ref Guid ClassGuid,StringBuilder classDescription, Int32 ClassDescriptionSize, ref UInt32 RequiredSize);public static bool IsDeviceClassInstalled(string deviceClassGuid){   return (IsDeviceClassInstalled(new Guid(deviceClassGuid)));} public static bool IsDeviceClassInstalled(Guid deviceClassGuid){   StringBuilder deviceClassDescription = new StringBuilder(256);   UInt32 retLength = 0;   SetupDiGetClassDescription(ref deviceClassGuid, deviceClassDescription, deviceClassDescription.Capacity, ref retLength);   return (deviceClassDescription.Length >...
no comments

When to use the IsBadXxxPtr Win32 API

Sunday, January 17, 2010

This post is a follow-up for two previous posts. The first is my own called Verifying C++ Buffers which was replied with a second post by Sasha titled IsBadXxxPtr Is Really Harmful – Please Don’t Use These Functions. The first post mentioned the advantages of using IsBadXxxPtr API over verifying pointers by using ASSERT (or comparing to zero). The second post mentioned the problems with this set of API in a multi-threaded application. Just to clarify my comment here is not personal and Sasha and I are having an academic discussion which will benefit us all. Let me start by saying...

WinUSB .Net Component

Tuesday, December 29, 2009

I have uploaded a WinUSB Component for .Net with full source code here: WinUSB .Net Component in C#. The component comes with full source code and has the following features:  
tags: , ,
3 comments