This routine is used in the Hello World example of chapter 2. Only the most common import libraries are shipped with VE - advapi32.imp, comdlg32.imp, gdi32.imp and kernel32.imp. It seems that there is no difference between the .lib and the .imp files. If you have just the .lib file you can copy it to the Visual Eiffel bin directory and give it a .imp extension. In the project options insert the filename in the object files entry field.
Some routines expect an array of structures.
At first it didn't work at all. Then I remembered that Sergei S.Ivanov answered to a similar question concerning a COM component that expected a pointer to an array of data structures. The Win32 routine always expects a C-pointer to the argument. At the moment I have to admit that I don't know why there is more than one. Win32 expects the attributes of a data structure to be in a special order.