I know you are specifically asked for a C-API implementation, but for completeness sake here is C++ implementation using the current CVB API.
The general idea is to use the GenAPI NodeMap and CVB’s NodeMap interface for more convenient and safe (in regard to possible memory leak, access violations etc.) way of accessing these two camera registers.
First you want to get the unmodified XML from the camera. You can use the CVB tool EditBindings from %CVB%Hardware\StemmerImaging\Utilities. You can list all commands buy calling the exe with
.\EditBindings.exe --help
First use
.\EditBindings.exe --listlinks
This should show you the link ID for the camera.
You can then save the original camera XML by using
.\EditBindings.exe --exportlinkxml "8,JAIGO_original.xml"
for instance. I keep a copy of the original XML.
I raised the version number of the XML to make sure the camera will use my modified XML instead of the original one if in doubt. The version is at the beginning of the XML, line 19 in my case. The original version of my camera XML is 5. I increased it by 1.
MinorVersion="6"
You have to add the two nodes for TimeStamp and TimeStampLatch to the XML. First add them to a category as a pFeature. I’ve chosen the AcquisitionControl category here.
<Group Comment="AcquisitionControl">
<Category Name="AcquisitionControl" NameSpace="Standard">
<ToolTip>Acquisition and trigger control features</ToolTip>
<Description>Category for the acquisition and trigger control features.</Description>
<DisplayName>Acquisition Control</DisplayName>
<pFeature>AcquisitionMode</pFeature>
...
<pFeature>TimeStamp</pFeature>
<pFeature>TimeStampLatch</pFeature>
</Category>
</Group>
Then add the nodes with their features. You need one command node and one integer node. Every node also has a corresponding register node.
<Command Name="TimeStampLatch" NameSpace="Standard">
<ToolTip>Toggles the TimestampLatch</ToolTip>
<Description>Toggles the TimestampLatch</Description>
<DisplayName>TimeStampLatch</DisplayName>
<Visibility>Guru</Visibility>
<pValue>pTimeStampLatchReg</pValue>
<CommandValue>1</CommandValue>
</Command>
<IntReg Name="pTimeStampLatchReg">
<ToolTip>Toggles the TimestampLatch</ToolTip>
<Address>0x001F8</Address>
<Length>2</Length>
<AccessMode>WO</AccessMode>
<pPort>Device</pPort>
<Sign>Unsigned</Sign>
<Endianess>LittleEndian</Endianess>
</IntReg>
<Integer Name="TimeStamp" NameSpace="Standard">
<ToolTip>TimeStamp</ToolTip>
<Description>TimeStamp</Description>
<DisplayName>TimeStamp</DisplayName>
<Visibility>Guru</Visibility>
<pValue>pTimeStampReg</pValue>
</Integer>
<IntReg Name="pTimeStampReg">
<Address>0x001F0</Address>
<Length>4</Length>
<AccessMode>RO</AccessMode>
<pPort>Device</pPort>
<pInvalidator>pTimeStampLatchReg</pInvalidator>
<Sign>Unsigned</Sign>
<Endianess>LittleEndian</Endianess>
</IntReg>
After you have saved the changes to the XML you have to link it to the camera by using the EditBindings tool again.
.\EditBindings.exe --addlink "U500601,GO5000CUSB_addedTimeStampNodes.xml"
You can check if the binding has been linked by using –listlinks again. It now should show a link to the original XML that CVB has stored automatically and the new, modified XML. Since the version number of the modified XML is higher than the original one the modified XML should be used if both XML are present.
Please note that that version shown in the screenshot is the version of the firmware, not the XML file version. The version 050 is in the default name of the XML file though.
If you then access the camera via GenICam Browser for instance, you see the new nodes in the grid.

You can then access these nodes programmatically using the C++ API. Here is a code snippet for Windows, using CVB’s 3rd gen acquisition stack.
#include <cvb/device_factory.hpp>
using namespace Cvb;
int main()
{
const auto flags = DiscoverFlags::IgnoreGevFD | DiscoverFlags::IgnoreVins | DiscoverFlags::IgnoreGevSD;
auto discoveryInformation = DeviceFactory::Discover(flags);
auto& deviceInfo = discoveryInformation[0]; // The JAI GO is the only, and thus first, camera connected to my system
auto token = deviceInfo.AccessToken();
auto device = DeviceFactory::Open<GenICamDevice>(token, Cvb::AcquisitionStack::GenTL);
auto myNodeMap = device->NodeMap("Device");
myNodeMap->Node<Cvb::CommandNode>("TimeStampLatch")->Execute();
auto timeStamp = myNodeMap->Node<Cvb::IntegerNode>("TimeStamp")->Value();
}