Measurement Studio for .NET Languages

cancel
Showing results for 
Search instead for 
Did you mean: 

Is NI-DAQmx supported as true 64-bit mode in Vista x64?

We have installed NI-DAQmx 8.7.1 on a Vista 64-bit machine. There's lots of stuff installed under Program Files (x86) but hardly anything installed under Program Files. This leads me to believe that true 64-bit mode is not supported. Also, when I change the C# sample code setting from x86 to x64, Visual Studio 2005 complains about targetting another processor.
 
We need the extra memory space that a 64-bit application will provide, but wondering if we will also be able to use NI-DAQmx?
Message 1 of 29
(10,059 Views)
No. National Instruments does NOT support DAQmx in 64-bit mode in Vista 64-bit. They only support 32-bit mode in Vista 64-bit. As of April 14, 2008 they have not released any plan to support 64-bit mode. They only say they are "working on it."
 
Why do they put "x64" on their Web site? http://zone.ni.com/devzone/cda/tut/p/id/6910. The term "x64" has a specific meaning in my mind: 64-bit mode. This seems to be very deceptive marketing.
0 Kudos
Message 2 of 29
(10,052 Views)
 

Hi deric,

I apologize for the confusion on our website. This was an oversight and not intended to be deceptive marketing. We do provide x64 kernel support, but you are correct in that we do not have a 64-bit version of the DAQmx libraries. I have corrected the document you mentioned to include a statement explaining this.

Thank you for the feedback, and please let me know if there is anything else we can do to assist you.

Charlie S.

Visit ni.com/gettingstarted for step-by-step help in setting up your system
0 Kudos
Message 3 of 29
(10,026 Views)

Charlie, Thanks for the follow-up. To be precise, I don't believe Microsoft uses the term "x64" when referring to Windows Vista 64-bit Edition. That was a term used with Windows XP, but later dropped, as far as I can tell.

Does NI offer any alternative to access the 64-bit kernel driver from our 64-bit application? We would be willing to use very low-level C/C++ function calls or whatever it takes to get access to this driver. Please let me know. Thanks.

0 Kudos
Message 4 of 29
(10,022 Views)

deric -

As Charlie stated, the information on the page you referenced was incomplete and thank you for pointing it out so that we could fix it.

For the benefit of the community, I'd like to explain why it is necessary for us to specify whether drivers supprt 64-bit Vista.

NI drivers contain both user-mode and kernel-mode DLLs. On a 64-bit OS, all kernel-mode DLLs must to be 64-bit. So, in order to be usable at all on a 64-bit system, the driver must include 64-bit kernel-mode DLLs. Older versions of NI drivers include only 32-bit kernel-mode DLLs. This is why we must specify which versions of the drivers can be used on a 64-bit OS.

Whether a driver can be used in a 32-bit application or 64-bit application depends on whether the driver includes 64-bit versions of the user-mode DLLs. NI-DAQ currently does not include 64-bit versions of the user-mode DLLs, so as you pointed out, they cannot be used in 64-bit applications.

I'd also like to know exactly which 64-bit libraries you need. Given that you posted in the .NET forum, I assume that you need a 64-bit version of the DAQmx .NET library; is that correct? Are there other National Instruments .NET libraries that you need 64-bit versions of (e.g. WindowsForms, WebForms, Analysis, NetworkVariable)?

David Rohacek
National Instruments

0 Kudos
Message 5 of 29
(10,021 Views)

Hi David,

We just need to access simple digital I/O (preferably using your 6528 card since that's what we just bought) under true 64-bit Vista. We can build our own .NET object, so a C++ interface to the 6528, for example, would do. We don't need interrupts or timers or anything fancy -- just read inputs and write outputs.

Does anything you have meet our needs?

Deric

0 Kudos
Message 6 of 29
(10,018 Views)
deric -
 
Here are some things to try for your application:
 
1. Stick with smaller buffers and go 32 bit.
Chances are you've considered this, but I am reiterating just in case.
 
2. Do your acquisition / generation in a 32 bit application, and post-process in a 64 bit app
If you can do your I/O in a 32 bit process, and some post-processing algorithms require large buffers, you may be able to do this.
 
3. Have a "controller" 64 bit app, an "I/O" 32 bit application, and use some form of inter-process communication to keep them in sync.
This is a fair amount of work, but it will get the job done.  You may have some performance issues with the extra communication overhead.
 
4. Wait until NI releases 64 bit versions of what you need.
 
Note that for the 6528 (and most other boards), you most likely don't need a 64-bit acquisition buffer.  A 200MB buffer can sustain a 10MS/s acquisition for at least 5 seconds, which should be plenty of time for an app to do extra work.  Since the 6528 is software timed, you will even more than 5 seconds. 
0 Kudos
Message 7 of 29
(10,003 Views)

Thanks, Ben.

We are developing an application that processes images. The images are large format and we need to keep many of them in RAM, thus our need for lots of memory. We cannot reduce the memory usage, so we need to move to 64-bit memory space.The digital I/O would only be used for reporting results, so it would be relatively low-speed, low memory usage.

Since we already use a competitor's .NET library in 32-bit, it would be a lot easier to integrate a 64-bit library. Since we cannot find any company that offer this (several claim to, but none have delivered!), we are considering alternatives. We are leaning toward developing a 32-bit service that would be accessed from our 64-bit application via RPC. Obviously, this would take some development, so if you have any other great ideas, we're listening. It blows our mind that there is no publishied or released API to the 64-bit kernel, no matter how non-trivial.

Deric

0 Kudos
Message 8 of 29
(9,999 Views)

Ben,

Thanks for this clear explanation !

So the current version of 64-bits drivers only support 32-bits applications ?
Its a matter of naming, but can you really call this 64-bits drivers ?

For the time being we will move the NI-code to a 32-bits out-of-process COM server.
Could you keep me updated when NI releases real 64-bits support ?

WR,

Kees

0 Kudos
Message 9 of 29
(9,965 Views)

Hi Kees,

There's been some great questions and I'd like to clarify and some up the forum thread. The driver supports the 64-bit kernal so it can run on a 64-bit operating system, such as Vista x64, but the user-mode kernal is only 32-bit (as described in posts above). This is similar to the industry switch to 32-bit back when Windows 95 came out. The operating system allowed 16-bit applications to run on the 32-bit operating system but with 16-bit memory references until developers released 32-bit applications. Ben Craig had alot of great information and we have also updated our website to reflect the misleading naming. If you look around our website, you will find that we never call DAQmx a 64-bit driver, but we do support it on the Windows O/S known as Vista x64. To further clarify, we provide support for the "Vista x86" and "Vista x64" operating systems. These are the names of the operating systems that Microsoft has given these two respective products. We provide support for them but we do not have a 64-bit application driver, regardless of if the name of the operating system has reference to 64-bit, in this case, their naming of the 64-bit flavor being "Vista x64."

If you're on SSP, you will be updated immediately of new releases of DAQmx. Otherwise I recommend checking https://www.ni.com/en/support/downloads/drivers/download.ni-daq-mx.html for the most up-to-date releases of the software.

 
PBear
NI RF
0 Kudos
Message 10 of 29
(9,906 Views)