== Parameters
Long:     'L'
Integer:  'I'
Pointer:  'P'
Void:     'V'
String:   'S'
Callback: 'K' # win32-api only

== Windows Data Types
BOOL  		=> 'I' (or 'B', win32-api only)
DWORD 		=> 'L'
HANDLE		=> 'L'
LPDWORD		=> 'P' (or 'L')
LPTSTR 		=> 'P'
LPCTSTR     => 'S'
UINT  		=> 'L'
VOID        => 'V'
WORD        => 'I'
LPVOID      => 'L' (or 'P')
CALLBACK    => 'K'

== C Data Types
void     	=> 'V'
void*    	=> 'P'
char*    	=> 'P'
const char* => 'L'
int			=> 'I'
long        => 'L'
struct      => 'P'
struct*     => 'P'

== Notes
In practice most LPVOID types should be designated as 'L' because this
usually means the function is looking for an address. Check the documentation
for details.

If using the windows-api library, you can use 'B' instead of 'I' for the return
type for functions that return a BOOL. 