I also had such a problem with the NI4351. I resolved it that way:
Use the VI 'AnalogInput' ('AI') Config and define a sufficient large buffer. Start the aquisition with the SubVI 'AI Start'. Now comes the trick: Within the loop (best use a timed loop, not a regular one - it consumes less CPU time and set it best to 300 ms or longer) use the SubVI 'Read' from the menu 'Advanced AI' (important! - not the SubVI 'AI Read'). Select the input 'Data to read' (sorry - i have the german version, so the input name might be different) and set it to '0'. This operation will check the buffer for new entries without really reading it. Now check the 'scan backlog' output whether it is nonzero. If so, use the 'scan backlog' value within a case structure to read the buffer with a copy of the SubVI 'Read'.
So you might ask, why not reading the buffer directly. You now can set the timed loop to 2 s and the loop will read 1...2 values per loop at maximum scan rate (the VI 'AI Start' will give you the exact rate in scans/sec...) with a minimum of CPU load.
However, i experienced a small but annoying difference between the SubVI 'AI Read' from the menu 'Analog Input' compared to the SubVI 'Read' from the menu 'Advanced Analog Input': When using the first, CPU load will be maximized while for the second VI the load is neglectable (even on a PII 300!). Nevertheless there seems to be a huge difference between the two versions: the read values differs. Depending on the desired accuracy, this can be very annoying - since you have to check first with an additional device, which voltage value is the 'true' one.... Maybe an expert here can tell us more about that!