AssocQueryStringWというWindows APIが使いたかったので、
http://msdn.microsoft.com/en-us/library/bb773471(v=vs.85).aspx

package require Ffidl
ffidl::callout AssocQueryString {int int pointer-utf8 pointer-utf8 pointer-utf8 int} int [ffidl::symbol shlwapi.dll AssocQueryStringW]

としてみたんですが、

set ASSOCF_NOTRUNCATE 32
set ASSOCSTR_EXECUTABLE 2
set pszFile [string repeat \0 255]
set dwOut 0
AssocQueryString $ASSOCF_NOTRUNCATE $ASSOCSTR_EXECUTABLE {c:\sample.txt} "open" $pszFile $dwOut
=> -2147024809

というのが返ってきます。
たぶん、ERROR_INVALID_PARAMETER(0x80070057) のことだと思うんですが、どの辺が間違ってるんでしょうか?