Windows Application Development...

User-mode application software occasionally closely interact with peripheral devices such that extensive experience with hardware devices or device drivers is critical for the quality of implementation of the Windows application. Sometimes, this requires implementation of WIN32 DLLs, which allow access to the device driver via IOCTLs for both WIN32 applications as well as from .NET via PInvoke.

Other times, large amounts of data need to be DMAd directly between a peripheral PCI Express device and the user-mode application memory space. This requires deep understanding and control of both the PCI Express device's DMA engine as well as of the internal working of Windows such as scatter-gather lists, virtual page mappings, processor caching etc.

Regardless of the technical challenges, due to our more than 20 years with working with Windows and the related Peripheral Devices, we have the expertise to properly and effectively implement your user-mode application!

Click here for a free estimate on your current or future project


Past Windows application projects

  • Video over Wi-Fi application, firmware, device drivers on next generation 802.11n MIMO chipsets. Designed Visual Basic .NET automation application to automate the start/stop/post-processing of 802.11n 4x4 sniffer captures of real-time Wi-Fi traffic data. UI widget development with Qt. Ported Visual C++ applications built with Visual Studio 2005/2008 to Visual Studio 2010. Interfaced with WildPackets Omnipeek COM API to extract information out of a live capture, parseed the 802.11n protocol data and support test automation operations. Developed and implemented algorithms for 802.11n MIMO PHY, Baseband and MAC firmware components. Technology: VB.NET/C/C++, 802.11n, Environment: Visual Studio 2005/2008/2010.

  • Windows Mobile 6.0 direct show filters and drivers. Hardware acceleration. Custom CETK tool to test complete functionality of Audio, Camera, Camcorder & mobile TV feature. Developed camera & camcorder application UI with custom features. Direct show filter and driver module for multimedia application. Environment / tools: C & C++, Microsoft platform builder, JTAG, QPST, QXDM.

  • 2.5 Gbps x4 lane PCI Express Protocol Analyzer hardware and software R&D described here. An external active probe makes copies of the upstream and downstream SERDES data which is sent to an Arria II GX FPGA. The FPGA byte orders, descrambles and deskews the data before storing it in an external DDR2 SODIMM. The PC software then programs binary sequence detectors in the hardware which then automatically detects the location of the PCI Protocol Items in SODIMM. The PC software then uploads this meta-data and builds an in-memory tree of the hierarchical protocol item data as it appears on the bus. Data is uploaded on-demand via Virtual Tree control. Technology: WinForms C# .NET 2.0, Environment: Visual Studio 2005.

  • Microsoft Platform Builder & Client mobile platform development for Windows Mobile 6.0 / Windows CE 6.0. Environment / tools: C & C++.

  • Windows and FreeBSD Client/Server development. Multi-threaded Server via C++ on FreeBSD. Client GUI via NetBeans IDE and JAVA. TCP/IP, UDP, IP and raw packet generation. Active Directory via Kerberos 5. Secure communications via TLSv1 (Transport Layer Security) protocol. Technology / tools: FreeBSD, Open Source Snort, IPC, TCP/IP, UDP, IP, IDS/IPS, NetBeans, Java, Active Directory, TLSv1, QT Creator and QT Designer.

  • Developed Windows GUI application in Borland C++ Builder for test and control of unit in both development and production (end user) environments. Developed RS232/RS485 interface for remote control of amplifier.

  • LS/FS/HS USB 2.0 Protocol Analyzer hardware and software R&D described here. The hardware utilizes a Cyclone II FPGA which receives USB link data via an NXP ISP1505 ULPI-compliant USB PHY. The FPGA encodes the data before it is buffered in an SDR SDRAM. The data is then sent to the Host PC via a Cypress FX2LP USB Controller for further analysis. Technology: Winforms C# .NET 2.0, Environment: Visual Studio 2005.

  • Win32/MFC PCI Explorer application described here. The PCI Explorer application enables the user to graphically view all the PCI devices and the buses they reside on accordingly to the actual hierarchy of the various devices on the buses. The Configuration Space as well as memory and I/O can be edited via the GUI. Technology: VB7, MFC, C++. Environment: Visual Studio .NET 2003.

  • Financial services Fraud Alert Management Middleware. C++, C#, and VB .Net GUIs. MS SQL Server. MSMQ. XML, TinyXML, and TinyXpath. Windows Server 2003, Ubuntu Linux, and Red Hat Enterprise Linux.

  • Windows based Flash Update Program for IEEE 1394 Hard Disk Drives

  • Host software architecture for LSI professional video decoder. The driver is based on the LSI DoMiNo multi stream, media processor and enables simultaneous decoding and playback of two video streams, one of which might be in a High Definition format. The application is based on an AVStream Windows XP minidriver which communicates with the DoMiNO firmware over the host system PCI bus. The AVStream driver is able to render video on the host system display device or on an external monitor connected to the decoder over the video output. The decoded video format includes various HD and SD frame sizes, including progressive and interlaced PAL or NTSC.

  • Palm / iPhone Windows Mobile 6.1 Application Development for Palm Treo 800w / Treo Pro, iPhone devices. Application and component development / porting. Custom software applications for commercial touch screen devices & computers. Environment / tools: C, C++, VS2005 & Platform Builder, iPhone, Windows Mobile 6.1.

  • Visual Basic 6 / Access database application that schedules information for a custom disposable handheld PDA. Technology: VB6, ADO, Access, SQL. Environment: Visual Basic 6, Access.

  • Development of a stock trading analysis system . Uses a real-time data feed from the Island ECN (www.Island.com). The data feed allows a number of SQL 2000 database servers to analyze the order value and volume of all stocks traded in the Island ECN in real-time. The data feed notifies the system as soon as an order is placed, executed or canceled in the Island ECN. Currently several million orders are processed every day, this generates about 1 GB data/day in the databases which in turn demands effective processing of the data. Proprietary algorithms have been developed and implemented as stored procedures that run in a SQL 2000 server cluster. Two independent networks were used together with fail-over routers/gateways to provide fail-safe networking. Technology: C++/VB, C#/.NET, SQL/T-SQL/Stored procedures. Environment: The SQL server 2000 standard tools (Enterprise manager, Profiler and Query analyzer).

  • Windows CE OS porting from WinCE.NET 4.2 to 5.0 (macallan) for the SMDK2410 & OMAP730 platform. Environment / tools: C & C++, Windows CE 5.0, Microsoft platform builder.

  • Assembler, Linker, Simulator and performance analyzer for the PINE Digital Signal Processor. Design and development of software development tools using Windows. Initial version of the simulator was ready 1 year before the chip was available. The debugger kernel was entirely script driven. The debugger shell translated GUI operations into script. The test script facility allowed for exhaustive automated testing of the chip which greatly simplified the process of regression testing.

  • Windows and Linux 2.4 GHz, wireless Audience Response Network. TI MSP430 handheld transceivers, a master transceiver, and USB HID to laptop transceivers. Laptops employ Windows or UBUNTU Linux operating system. GUI front ends via applications, DLLs, and shared libraries. IAR tools for TI MSP430, Visual Studio 2010 / MFC for Windows, Code::Blocks / WxWidgets / WxForms for Linux.

  • Development of a WinAMP plug-in that uses the Spatializer proprietary sound processing algorithms. A UI was created that integrated with the Windows shell (notification tray integration with pop-up menus) through which the sound processing algorithms could be adjusted. Technology: MFC/WIN32/ C++. Environment: Visual Studio 6.0.

  • Military Vehicle Transmission Control System SW design / implementation. The UML, OOA/OOD, MDD, (Model Driven Development), MDA, (Model Driven Architecture), MBD, (Model Based Development), development tool, is Rational Rhapsody for C++. Configuration management is provided by Rational Synergy. The tool chain for the PowerPC processor is the Wind River Diab compiler/linker, and the debugger/IDE is Eclipse. Visual Studio 2008 is also used for development and testing of the PC host version. A dialog based TCM simulator was developed to aid in quick mock up of new shifting functions. Many communication protocols, including J1939.

  • Ported application from WinCE 4.2 to Windows Mobile 5.0 using VS2005 and Wireless Village Server. Instant messaging, Presence & Group features. User Interface, Engine & Network module. Environment / tools: C & C++, Microsoft Windows Mobile 5.0 Smartphone Emulator, Visual Studio 2005 BETA.

  • MFC/WIN32 application ("Virtual Sound Processor 11") used to configure sound processing device drivers . The UI was built using an MFC dialog application that hosted several custom ActiveX components that were developed in C++/MFC. The Macromedia Flash player control was also used for effects in the UI. A setup application was created using InstallShield. A demo can be downloaded from www.spatializer.com. Technology: MFC/WIN32/ C++. Environment: Visual Studio 6.0.

  • WIN32 application programming. A Windows 2000 service was created that published data retrieved from a 3rd party SDK into a Microsoft Active Directory database. Technology: LDAP, Active directory, WIN32. Environment: Visual C++ 6.0, Windows 2000.

  • GPS navigation for a NASA space vehicle. A radiation hardened BRE440 PowerPC utilizing the Nucleus RTOS (Real Time Operating System) is used along with DIAB build tools. IBM rational DOORS is used for requirements definition and management. IBM Rational Rhapsody is used for OOA/OOD and UML drawings. IBM Rational ClearCase is used for SCM (Software Configuration Management) and IBM Rational ClearQuest is the CM (Change Management) tool used for SCR (Software Change Requests). IBM Rational ClearCase Remote Client Unified Change Management (UCM) unifies ClearCase and ClearQuest into one system for total CM control. VMC (Vehicle Management Computer) to GPSR (Global Positioning System Receiver) communication is provided by an HDLC channel with Manchester Encoding and an RS-422 interface. C and C++ are the programming languages. The firmware and software will be certified to D0178-B standards.

  • ActiveX object hierarchy in C++/ATL 3.0. The COM components were used from Visual basic/ASP to search for, retrieve and update information in Microsoft's Active Directory databases. Uses advanced features of ATL3.0 to implement Visual Basic collections etc. Technology: C++/ATL, ActiveX, COM, VB, ASP, Environment: Visual InterDev 6.0, Visual Basic 6.0, IE 5.0, Windows 2000.

  • PC based voice recognition and text to speech engine, for a command and control system. Visual C++ 6.0 using MFC is used to create the WIN32 program, that will be used as a basis for a Bluetooth enabled portable computer. Also, a Bluetooth PC program that operates a Sony Ericsson T68 cell phone, using an Infineon Class 1 Bluetooth radio. Now, in the process of porting these Windows applications to Linux. The target hardware is the ARM7.

  • Visual Basic 6.0 Application Development that used the above mentioned ActiveX components. For instance was an explorer-like tool implemented which allowed the user to graphically browse, update and delete information in a Microsoft Active Directory server.

  • Pocket PC Development for NEC700, Compaq PPC and X86 H/PC. Added Square screen and landscape support, High DPI support, Pan and Zoom features to MS Reader MS-Reader for Windows CE4.2 (all CPUs) and Pocket PC (2000, 20002 & 2003). Converted existing applications and DLLs into ATL COM OCX control. Developed tool to backup and restore the selected or all files, databases and registry settings on any device running Windows® CE. Environment / tools: Pocket PC Emulator, Windows CE 4.2, C, C++ & Microsoft Embedded VC++ 4.0.

  • Windows 2000 service. Used for, in a background task, collecting information from Canon printers and copiers (status information etc) and updating a directory server with the retrieved results. Written directly to the WIN32 API in C++. Technology: C++/WIN32 Environment: Visual C++ 6.0, Windows 2000.

  • Windows NT Network programming via Windows sockets. Added network support in software that uploads data from automobile computers, generates XML-files and sends the XML-files to a central server for storage. Uses standard TCP/IP network for communication. Development of a user interface for communication with the server. Development of WEB-based presentation of data using Visual Interdev 6 and ASP. Technology: Delphi 4, WIN32 and ASP. Environment: Windows 95/98/NT.

  • Embedded Firmware Keyless Entry System & Replink Projects. System design, hardware specification and block level design, DOS/Windows application development, serial (direct/MODEM) interface and protocol development, Novell LAN development.

  • Windows CE 3.0 Application Development. Multimedia player supporting real-time MP3 (fixed point decoder) support using Microsoft DirectX 6.0, COM. Application to track sales opportunities, leads, referrals, actual sales, price, cost, etc. Ticker & Chart Control application for Digital Audio Broadcasting receiver, Software package for a Digital Audio Broadcasting Station. Environment / tools: x86, PPC & Custom device, Windows CE 3.0, C Embedded VC++ & Embedded Visual Basic, Microsoft VC++ 6.0 with MFC and Microsoft TAPI.

  • ActiveX communication component for Windows NT/98. It was used real time in a Visual Basic application to control an industrial computer via a serial link. Implementation of a serial communication protocol of type Modbus. The component was implemented in C++ using ATL 3.0 in Visual Studio. Development of test applications in Visual Basic 6. Technology: C++, Visual Basic, ATL 3.0, WIN32. Environment: Visual Basic 6.0, Visual C++ 6.0.

  • COM-components in C++/ATL and Visual Basic. Used to in real-time stream data into a client/server system that handles real-time analysis and display of streaming clinical data. Uses Microsoft DirectShow technology. Technology: DirectShow, COM, ATL, IDL, WIN32. Environment: Visual Studio, C++, VB

  • Development of a Windows CE application in VB/C++ which was used for tracking time and expenses on Palm and Handheld PCs. ActiveX components were developed in ATL. Database programming via ADO on CE and PC platform. Synchronization of databases between the Windows CE device and the desktop platform. Technology: C++/ATL, ActiveX, COM, VB, Environment: Visual Basic, Visual C++, Windows CE 2.0.

  • 16-bit application for Windows 3.1/3.11/95/NT which is the user interface to an On-Line measuring equipment to measure parameters of paper quality in a paper-processing machine. Direct WIN16 programming in C. Implementation of an HTTP-server using Windows sockets for communication over TCP/IP-network. Creation of Implementation of On-Line help using RTF-files and Microsoft Help Compiler. Creation of an Installation program using Installshield. Technologies: WIN16, C. Environment: Borland C/C++, InstallShield.

  • Windows application used for remotely controlling a satellite receiver. Channels could be scanned for, stored and be brought back for later viewing. The position of the satellite dish could be remotely controlled by the Windows application, which enabled the application to automatically search for new satellite channels without user intervention. Stored channels could, after an automatic search, be sequentially previewed for a number a seconds. Printing support was included which enabled lists of channel information, satellite position and other relevant information to be presented on paper. The application was a 16 bits object oriented C++ application developed with Microsoft Foundation Classes (MFC) using Visual C++. Technology: MFC, Visual C++, 16-bits application components (VBX's). Context sensitive On-Line help. Installation program (Installshield).

  • Windows CE WIN32 application development for an embedded medical device. Low-level Windows CE system programming of flash memories, Real time clock and other system functions. Technology: Microsoft Windows CE 2.0. Environment: Microsoft Windows CE Embedded Toolkit, C++.

  • Logic Analyzer targeted to run in MS-DOS. The application was used as the interface for a logic analyzer, which sampled data from a microprocessor system. The communication with the sampling hardware took place via a parallel ISA interface board. Functions for disassembling sampled data (Motorola 6800 format) and for searching for data pattern as well as trigging sampling at predefined data pattern were implemented. Technology: MS-DOS, Borland Pascal.

  • ASP-based WEB site. Built on NT4/IIS4 using Visual Interdev 6.0. Design/Implementation of various COM components in ATL/C++. Design and implementation of the SQL server database for the WEB site. ADO was used for the data access. Technology: ASP, COM, ATL, SQL, and WIN32. Environment: Visual Interdev 6.0, Visual C++ 6.0.

  • 802.11 Wireless LAN, Bluetooth, software testing, software engineering, database, SAN and storage systems, PERL programming, security programming, MBA software development process management, MBA software CMM case study, MBA computer database concepts, VxWorks embedded programming workshop, SQA automation tools workshop WinRunner and Silktest, and UNIX system administration. Technology/Environment: 802.11 Wireless LAN, Bluetooth, SAN, PERL, SQA, UNIX.

  • ActiveX object hierarchy in C++/ATL 3.0. The COM components were used from Visual basic/ASP to search for, retrieve and update information in Microsoft's Active Directory databases. Uses advanced features of ATL3.0 to implement Visual Basic collections etc. Technology: C++/ATL, ActiveX, COM, VB, ASP, Environment: Visual InterDev 6.0, Visual Basic 6.0, IE 5.0, Windows 2000.

  • ActiveX/ATL. Design and development of ActiveX-components used for displaying barcodes and some additional information in WEB-pages. Technology: ActiveX, COM, ASP, Environment: Visual C++ 6.0, Visual Basic 6.0, IE 4.0.

  • Uncompressed video streams from digital camera to computer RAM memory in 30 frames/s, 24-bit color and 640x480. Device driver programming using video frame grabber hardware, process uncompressed video images in AVI format, transmit uncompressed video streams over ATM network in TCP/IP socket. MPEG and JPEG encode and decode, Microsoft ActiveMovie (DirectShow) SDK in Visual C++ MFC.

  • Performance tuning and optimization of large-scale database applications on PentiumPro servers. Use TPC series benchmark tools to measure application performance, configuration of various chip setups on Windows NT and MS SQL Server. Compare and analyze different server configurations from 1 to 4-processor systems. Run 1 to 10 query streams against a validation database of 100MB size and run the atomicity and consistency tests.

  • Application porting and optimization of a taxi-driver license examination software based on LAN environment. Successfully port it from the original 16-bit Windows and Novell NetWare platform to all 32-bit Windows NT based on a 166MHz Pentium Pro server system. Implement in SYBASE 10 for Windows NT and PowerBuilder. Improve the performance from 10 to 12 minutes to generate exam questions for 50 simultaneous users to less than 5 minutes in the new system after using performance improvement techniques tailored to PentiumPro server architecture.

  • OpenGL display lists on Windows NT, then play them back at 60 fields per second on a dedicated video mixing system.

  • Windows 3.11 Scientific Software development. Design and development of PC application for MS Windows 3.11 of a data analysis system for field-portable Gas Chromatograph/Mass Spectrometer instrument that collects and analyses hazardous air pollutants. Individual areas of responsibility include: DLL architecture implementation; command protocol design and development; real-time acquisition module employing Windows Socket 1.1 API; development of GUI Method Editor application employing lex- and yacc-like tools; design and implementation of data manager for saving/restoring mass spectra over time, and providing API so external processes are able to access the data, both in PC/Windows and on Inficon/OS-9000 embedded system.

  • Multimedia authoring tool based on Windows for Workgroup 3.11. Implement using Object-Oriented design on MS Visual C++.

  • Computer Output Laser Disc document storage and retrieval systems. Optical Storage, LAN, RDBMS (Informix), on Windows, DOS, OS/2, AS400, RS6000/AIX platforms. Development environment was C, C++, ESQL/C, Pascal, and Delphi.

  • ASP/VBScript/JavaScript. Design and development of an advanced WEB application used to online print barcode data retrieved from SQL Server 7.0. Use of Design time controls and of the above mentioned ActiveX component. Server and client side scripting. Technology: ActiveX, COM, ASP, Environment: Visual InterDev 6.0, Visual Basic 6.0, IE 4.0, Windows NT.

  • Developed application and software tools in C, SQL database, Microsoft Visual FoxPro, management information systems design and development, IBM AS/400 programming.

  • x86 ASM and C/C++ Application Development. Development and testing of spreadsheet application for fully integrated application program. Coded in x86 assembler and C/C++ as system moved from MS-DOS to MS-Windows 3.0, UNIX System V, and early OS/2.

  • Multi-threaded X Windows server for Windows NT. This product included built-in clients and produced better performance and compliance scores than its top competitor. It was Intergraph's first shrink-wrapped product from its system software division, and the company's pilot project for its ISO9000 program.

  • Development of a multi-tasking DOS kernel for a multi channel add on IBM( PC card for Point Of Sale systems. The development evolution included the design and implementation of a real time multitasking operating system, implementation of LAN data link protocol (LLC IEEE 802.2) over Ethernet and Token Ring physical layers, the IBM SDLC protocol, proprietary inter network protocol for communication over a telephone lines, and a fast backup communication protocol. In addition, the project contained the development of the card device driver and a LAN application on the host PC as well as the development of a file manager which operates in the background (implemented as a TSR ) under the DOS operating system.

  • X Windows displays on UNIX-based graphics platforms, including a direct-rendering library that increased the speed of graphics primitives up to 400%.