¿Cómo usar Rundll32 para ejecutar la función DLL?

Uso de la documentación de ShellExecute como referencia:

Ejecuto lo siguiente desde la línea de comando:

C:\>RUNDLL32.EXE SHELL32.DLL,ShellExecute handle,"open","C:\Documents and Settings\admin\Desktop\tmp",NULL,NULL,SW_SHOWNORMAL 

Esto da como resultado un error de excepción.

No sé lo que esto significa:

 HINSTANCE ShellExecute( __in_opt HWND hwnd, __in_opt LPCTSTR lpOperation, __in LPCTSTR lpFile, __in_opt LPCTSTR lpParameters, __in_opt LPCTSTR lpDirectory, __in INT nShowCmd ); 

Pero en la descripción, se mencionan un identificador (HWND) y un puntero a una cadena terminada en nulo (LPCTSTR), pero es muy confuso.

Cualquier ayuda sería muy apreciada. También me gustaría aprender más, ¡así que cualquier referencia (libro, enlaces web, etc.) también sería genial!

    Rundll32 solo es compatible con la ejecución de exportaciones de DLL con la siguiente firma:

     void CALLBACK EntryPoint(HWND hwnd, HINSTANCE hinst, LPSTR lpszCmdLine, int nCmdShow); 

    No es compatible con la ejecución de puntos de entrada arbitrarios. Como ShellExecute no tiene esa firma, claramente suceden cosas malas.

    INFORMACIÓN: Windows Rundll y Rundll32 Interface tiene más información sobre la interfaz rundll32.

    Si desea hacer el equivalente de ShellExecute desde la línea de comando, simplemente use start:

     C:\>start "C:\Documents and Settings\admin\Desktop\tmp"