Difference between sapi.dll and mssps.dll - sapi

I installed Microsoft Speech Platform SDK 10.2, and I notice that sapi.dll and mssps.dll have similar APIs. What's the difference between them? Which one should I use? Thanks.

Microsoft Speech Platform SDK 10.2 is the server version of SAPI. The server engines support lower quality audio, but don't support dictation. Also, the server versions of SAPI (I believe) have license restrictions that the desktop versions do not.
The desktop engines are typically bundled with Windows, so if you have Vista or Windows 7, the desktop engine is built in; for XP, the desktop engine is free to use.

Related

Application development Windows Embedded Compact 7.0 for Motorola MC32NO

I am trying to get started on application development for my Motorola MC32N0 device running Windows Embedded Compact 7.0.
This tutorial explains that I need a Board Support Package (BSP), however I am unable to find this on the Zebra website. Is a BSP available for the Motorola MC32N0, and where can I find it?
Another question, during the installation of Platform Builder 7.0 I used a trial license key. Now if I deploy the build output to my device, will it replace the OS that is already installed, or will it just deploy the application?
I am new to Windows CE, but have a background in web development and WinForms.
For C/C++ application development, Visual Studio 2008 and the Motorola SDK will suffice.
BSP's on the other hand are for developers working on low-level code such as the kernel OAL and device drivers. Platform Builder 7.0 is a plug-in to Visual Studio 2008 that enables building and debugging BSP code, and is not required for application development either.
If you only intend to develop C# applications, you may not even need the Motorola SDK, but could target just a generic Windows CE device in Visual Studio.

can a directx executable be statically linked such that the redistributable dll's are not needed on the system?

Please can anyone tell me if it's possible to statically link in all the directx libs.
Basically can i build an exe that will run on any windows system that does not have the directx redistribu installed?
As noted, you can't statically link the "DirectX" libraries i.e. Direct3D, DirectInput, DirectSound, etc. That said, depending exactly on your definition of "any Windows system" you actually do not need the DirectX "Redist". It doesn't do what you think it does. See Not So DirectSetup for the a longer discussion of this.
If you use Direct3D 9 or later, DirectDraw, DirectSound 8, DirectInput 8, DirectShow, DirectMusic, DirectPlay, etc. i.e. what historically has been called "DirectX 9.0c" (aka the Summer 2004 release), those bits are always present on Windows starting with Windows XP Service Pack 2, Windows Server 2003 Service Pack 1, and Windows XP x64 Edition. Therefore, as long as you require those as your minimum OS (or something greater), you don't need any DirectX Redist because it doesn't actually install any of those things. Take a look at What's in a version number? for examples of the "you must be this high to ride this ride" checks that guarantee this. Supporting Windows 2000, Windows 9x, or Windows ME or even Windows XP RTM/SP1 these days seems way out of scope.
For Direct3D 11, read Direct3D 11 Deployment for Game Developers. Direct3D 11.0 is built into Windows 8.x and Windows 7. It is on Windows Vista Service Pack 2 with KB 971644 installed which was pushed by Windows Update so it's basically everywhere.
Where it gets murky is if you are using other stuff in the DirectX SDK:
All versions of D3DX9, D3DX10, and D3DX11 are deprecated (see MSDN). If you depend on these, you still need the legacy DirectSetup. The good news is that with Direct3D 11, you don't need to use it at all. Instead see Living without D3DX for a bunch of new support libraries that are statically linked to your application as well as available shared-source--which includes DirectX Tool Kit mentioned in the other answer.
The HLSL compiler is not actually in D3DX anymore, and if you use the Windows 8.x SDK version of D3DCompile you can deploy that DLL side-by-side with your application avoiding the need for the DirectX Redist. See HLSL, FXC, and D3DCompile. Note that this DLL only supports Windows Vista or later, so runtime HLSL compilation on Windows XP still requires the legacy DirectX SDK and DirectX Redist. If you pre-build your shaders and are not using the Effects (FX) framework, this is not an issue.
If you use XINPUT, you should use XINPUT 9.1.0 (the original version) unless you are specifically using the headset audio features of XInput 1.3. This version is built into Windows Vista and later. If you require Windows 8.0 or later, you can use XInput 1.4. See XINPUT and Windows 8. Note that Server editions of Windows do not have XInput 9.1.0 or 1.4.
If you are using XAUDIO2, then you have a choice to make. If you require Windows 8.0 or later, then you can use XAudio 2.8 as it's built-in to the OS. Otherwise you need to use XAudio 2.7 which still requires the legacy DirectX REDIST to deploy. See XAudio2 and Windows 8.
If you use XACT, then you have to use the legacy DirectX REDIST as that's the only way to deploy the XACT engine.
If you are using the legacy DirectX Managed Assemblies for .NET 1.1, you should move to something else like SlimDX or SharpDX for a host of reasons. See DirectX and .NET
If you are making use of other "DirectX" things, you should read DirectX SDKs of a certain age for some guidance. In short: Don't use Direct3D Retained Mode, DirectPlay Voice, or DirectX 7/8 Visual Basic 6.0 as they aren't in the OS starting with Windows Vista.
No, the DirectX redist binaries are not available as static libs, though most of the useful functionality is now available as source in the DirectX Tool Kit.

Phidget SBC compatibility with Windows Embedded

I am an IT engineering student and I am currently working on embedded system project and I want to know if Phidget SBC supports Windows Embedded because in the product specifications I found that its default OS is Debian Linux. If it is possible, does Phidget SBC3 run Windows Embedded 8/Windows Embedded 8.1 ? Thank you.

Visual Studio 2012 thinks I'm on Windows 8 and demands libraries I don't have?

I implemented the code from one of the samples in the DirectX 11 SDK from June 2010.I open my project in 2012 and then I open the sample in 2012 too,however when I run mine,it requires XAudio2_8.dll.How is thsi even possible?That's the .dll in Windows 8 and the code from the SDK is from 2010 - such .dll didn't exist back then?The weirdest thing is the SDK sample builds and runs,while my project asks for the .dll.I linked all the libs,made all the includes,I checked around the project settings,searched the whole hard drive for such a dll,nothing...What could be causing such a problem?I've also been having all sorts of other problems in the SDK under VS2012,like not recognizing types in the dx11 headers and so on.
The Windows 8.x SDK has the DirectX SDK integrated into it, which for many areas means you don't need to use the legacy DirectX SDK at all. In particular, Direct3D, DirectSound, DirectInput, etc. all have the proper headers and libs in the Windows 8.x SDK.
The DirectX SDK is quite venerable, so there are a number of older things missing: no DirectMusic playback, DirectPlay, etc. I have a blog post that provides a full inventory of what happened to everything in the DirectX SDK.
Where it gets complicated is XAudio and XInput. Both XAudio 2.8 and XInput 1.4 are part of the Windows 8.x OS, but is not available on Windows 7. If you are targeting 'down-level' to Windows 7, you have to use XAudio 2.7 and either XInput 1.3 or XInput 9.1.0. This somewhat messy story is covered in two blog entries: one for XInput and one for XAudio. The good news is that most use of XInput is actually doable with XInput 9.1.0 which is part of the Windows OS starting with Windows Vista. It's XAudio 'down-level' that requires mixing the modern Windows 8.x SDK and the legacy DirectX SDK, plus having to use the legacy DirectX SDK REDIST (DirectSetup).
The root reason you are getting a 'runtime' error instead of a 'compile-time' error is that you didn't set _WIN32_WINNT to 0x0601 for Windows 7 (or 0x0600 for Windows Vista). If you had, the XINPUT.H header in the Windows 8.x SDK would automatically use the XInput 9.1.0 version and the XAUIOD2.H header in the Windows 8.x SDK would have errored out and told you it wasn't going to work for Windows 7.
Finally, I've cleaned up and reposted many of the old Direct SDK samples to MSDN Code Gallery in such a way that they don't need the legacy DirectX SDK.
The basic rule is, if you develop XAudio2 program on Win 8, use the Windows SDK, otherwise, use DirectX SDK.
If you are working on Win7, make sure
the head file XAudio2.h you are using comes from the DirectX SDK, that's something like C:\Program Files\Microsoft DirectX SDK (June 2010)\Include\XAudio2.h, not come from the Win8 SDK, something like C:\Program Files\Windows Kits\8.0\Include\um\XAudio2.h(in case you installed the Win8 SDK)
Call CoInitializeEx(NULL, COINIT_MULTITHREADED); before calling XAudio2Create, since the old version(before 2.8) of XAaudio2 was created by COM, so it does not need a .lib file, and there is no .lib file for XAudio2 before Win8.
This page below contains a detail introduction of the version of XAudio2, you can take a look.
XAudio2 Versions

Windows Embedded CE 6,0 Installation

I need to install the Windows Embedded CE 6.0 package that works with Visual Studio 2005 because I need to upgrade an old driver that runs under CE 6.0. I understand that Microsoft does not support this CE package any longer and, in fact, they no longer provide the installation files for CE 6.0
Where can I get the Windows Embedded CE 6.0 installation files??? They can be in an ISO file or whatever format is available.
I'm not sure if I understood your question right. By package you mean BSP (Board Support Package)?
If you are new to CE, you will need a brief explanation before get started.
The Windows CE 6.0 itself doesn't have exactly installation files. The runtime system is built through a toolkit called Platform Builder. As "input" for platform builder, you select which components your runtime image will have (including drivers) and as "output" is created a binary image of your system. You may transfer your runtime image to the device with a few different methods.
Regarding drivers, they usually are distributed through BSPs. BSPs are built by the device maker so you could check the device manufacturer site for BSPs, but you can give a try first on the supported packages search (http://www.microsoft.com/windowsembedded/en-us/downloads/board-support-packages-for-windows-embedded.aspx).
You can get the Platform Builder Toolkit with a Microsoft Authorized Embedded Distributor or through a MSDN subscription (http://www.microsoft.com/windowsembedded/en-us/evaluate/how-to-buy-windows-embedded-compact-7.aspx). The Platform Builder for CE6 comes with a copy of VS2005.
Windows CE6 is currently at R3 (released in 2009) and it is supported (mainstream support) at least until 2014 (http://www.microsoft.com/windowsembedded/en-us/evaluate/windows-embedded-roadmap.aspx).
I strongly recommend you to take a look at least on http://www.microsoft.com/windowsembedded/en-us/develop/windows-embedded-ce-6-for-developers-overview.aspx. I'm not much experienced with CE6 (few months) but my personal experience says that it's a long path to code drivers for CE.