To be honest I don't know much assembly either. But just putting "__asm rdtsc" in a function that returns a UInt64 value gives the RDTSC timestamp right to you (via eax register).
You can probably get SSE, etc. flags from WMI (Windows Management Instrumentation) but I'm not sure. To me, MSIL looks a lot more complicated than just raw assembly for doing menial tasks, and it still runs under .NET. You can always use put unmanaged C in a C# app.
You are trying to make a benchmarking program? Because of speed maybe you should write it as a C console program and use a .NET program as a front-end to that console program. Or, you could do DLL calls like you're doing now too. It's actually fairly easy. The Project Wizard does the grunt work for you for the most part in terms of DLLs. All you have to do is add that .def file, then add a function to call cpuid or whatever you want (in __asm {} clause) and you're basically all set. If you're a hardcore VB programmer, learning how to interface with C is great knowledge to have. If you'd like I can send you the project file I have for this DLL.
Basically: When in Visual C, choose DLL for new project.
It doesn't matter what you do in the wizard, just make sure you get a C file you can type in once you're done with the wizard.
Then, add a .def file to the project like I explain above. In the C file implement the function(s) you defined in the .def file (rdtsc() or whatever). Sample:
Project name: myfirstdll
[Add to project as a blank text file]: myfirstdll.def
; contents start here, not including this line
LIBRARY myfirstdll
EXPORTS
myfirstfunction @1
mysecondfunction @2
; contents end here
(Just make sure that each function has a unique number after its @ symbol. At least that's how it works in my experience.)
Then VC will look for a .def file with the same name as the project name and it'll find that and use it as a definitions file to export those functions. Exported functions are just ones that are accessible externally via a call from another program (like a .NET one). .NET imports the DLL's exported functions. There is one function in the DLL that is not exported just as an example.
[Open up the main .c/.cpp file that VC Wizard created for you]
Just ignore every other function in there for now (DllMain, etc). Don't worry about them.
But at the end of the C++ file (not stdafx.cpp, it's going to be 'myfirstdll.cpp'), add these implementations (see attached code) for your functions you defined in the .def:
And it's as simple as that. Just compile the DLL (debug,release doesn't matter for now). Then use .NET to import it (code for DllImport is above). It's the same unsigned __int64 as my rdtsc so that should be easy. See how that works for you (DllImport myfirstfunction and DllImport mysecondfunction).