list of dll functions where an explicit W or A is required

Put simple Tips and Tricks that are not entire Tutorials in this forum
User avatar
jeeswg
Posts: 6902
Joined: 19 Dec 2016, 01:58
Location: UK

list of dll functions where an explicit W or A is required

Post by jeeswg » 30 Oct 2019, 06:25

DllCall() - Syntax & Usage | AutoHotkey
https://www.autohotkey.com/docs/commands/DllCall.htm
If no function can be found by the given name, an A (ANSI) or W (Unicode) suffix is automatically appended based on which version of AutoHotkey is running the script.
- So, in AutoHotkey, when you use DllCall, and call 'DllName\Func', if Func does not exist in the dll, then DllName\FuncW or DllName\FuncA is called depending on whether the AutoHotkey exe is Unicode or ANSI.
- There are many dll functions where FuncW and FuncA exist, but Func doesn't, and so people assume they can omit the W or A. However, sometimes Func does exist.
- So you might have a dll containing: the pair Func/FuncW, the pair Func/FuncA (unusual), or all three Func/FuncW/FuncA.
- For example, winmm.dll contains PlaySound, PlaySoundA and PlaySoundW. If you specify PlaySound, that will only work on ANSI versions of AHK, so you must explicitly specify W or A:

Code: Select all

;q:: ;test PlaySound
vPath := "C:\Windows\Media\tada.wav"
;SND_FILENAME := 0x20000 ;SND_NODEFAULT := 0x2 ;source: playsoundapi.h
DllCall("winmm\PlaySound", "Str",vPath, "Ptr",0, "UInt",0x20002) ;works on AHK ANSI versions only
MsgBox
DllCall("winmm\PlaySound" (A_IsUnicode?"W":"A"), "Str",vPath, "Ptr",0, "UInt",0x20002)
MsgBox
return
- Here is a script that will go through dlls in C:\Windows\System32 and C:\Windows\SysWOW64, look for instances of Func/FuncW and/or Func/FuncA, and list the appropriate 'DllName\Func' string for use with DllCall. Note: it makes use of DllListExports by SKAN.

Code: Select all

;q:: ;list dll functions - list XXXW/XXXA functions where XXX exists
if A_Is64bitOS
	DllCall("kernel32\Wow64DisableWow64FsRedirection", "Ptr*",0)
vDir32 := "C:\Windows\SysWOW64" ;SysWOW64 *is* 32-bit
vDir64 := "C:\Windows\System32"

;get dll list:
vListDll := ""
VarSetCapacity(vListDll, 1000000*2)
Loop Files, % vDir32 "\*.dll", % "F"
	vListDll .= A_LoopFileName "`n"
Loop Files, % vDir64 "\*.dll", % "F"
	vListDll .= A_LoopFileName "`n"
Sort, vListDll, U
vListDll := Trim(vListDll, "`n")

vSfxWA = (A_IsUnicode?"W":"A")
vSfxWOrBlank = (A_IsUnicode?"W":"")
vSfxAOrBlank = (A_IsUnicode?"":"A") ;this would be unusual

vOutput := ""
VarSetCapacity(vOutput, 1000000*2)

;get function list (and check for XXX/XXXA/XXXW functions)
Loop Parse, vListDll, % "`n", % "`r"
{
	vDllName := A_LoopField
	vPathDll32 := vDir32 "\" vDllName
	vPathDll64 := vDir64 "\" vDllName
	vText32 := FileExist(vPathDll32) ? DllListExports(vPathDll32) : ""
	vText64 := FileExist(vPathDll64) ? DllListExports(vPathDll64) : ""
	vText := vText32 "`n" vText64
	Sort, vText, U
	vText := Trim(vText, "`n")

	;oMap := Map()
	oMap := Object()
	vOutputTemp := ""
	vDllNameNoExt := RegExReplace(vDllName, ".dll$")
	vPfx := Chr(34) vDllNameNoExt "\"
	vDQSp := Chr(34) " "
	Loop Parse, vText, % "`n"
	{
		vTemp := A_LoopField
		oMap["z" vTemp] := 1
	}
	Loop Parse, vText, % "`n"
	{
		vTemp := A_LoopField
		if oMap.HasKey("z" vTemp "A")
		&& oMap.HasKey("z" vTemp "W")
			vOutputTemp .= vPfx vTemp vDQSp vSfxWA "`r`n"
		else if oMap.HasKey("z" vTemp "W")
			vOutputTemp .= vPfx vTemp vDQSp vSfxWOrBlank "`r`n"
		else if oMap.HasKey("z" vTemp "A")
			vOutputTemp .= vPfx vTemp vDQSp vSfxAOrBlank "`r`n"
	}
	if !(vOutputTemp = "")
		vOutput .= "[" vDllName "]" "`r`n" vOutputTemp "`r`n"
}
vOutput := SubStr(vOutput, 1, -2)
vPath := A_Desktop "\z dll functions that need an explicit W or A " A_Now ".txt"
FileAppend, % vOutput, % "*" vPath, UTF-8
;Clipboard := vOutput
MsgBox, % "done"
return

;==================================================

;DllListExports() - List of Function exports of a DLL - AutoHotkey Community
;https://autohotkey.com/boards/viewtopic.php?f=6&t=4563

DllListExports( DLL, Hdr := 0 ) {   ;   By SKAN,  http://goo.gl/DsMqa6 ,  CD:26/Aug/2010 | MD:14/Sep/2014

Local LOADED_IMAGE, nSize := VarSetCapacity( LOADED_IMAGE, 84, 0 ), pMappedAddress, pFileHeader
    , pIMGDIR_EN_EXP, IMAGE_DIRECTORY_ENTRY_EXPORT := 0, RVA, VA, LIST := ""
    , hModule := DllCall( "LoadLibrary", "Str","ImageHlp.dll", "Ptr" )

  If ! DllCall( "ImageHlp\MapAndLoad", "AStr",DLL, "Int",0, "Ptr",&LOADED_IMAGE, "Int",True, "Int",True )
    Return

  pMappedAddress := NumGet( LOADED_IMAGE, ( A_PtrSize = 4 ) ?  8 : 16 )
  pFileHeader    := NumGet( LOADED_IMAGE, ( A_PtrSize = 4 ) ? 12 : 24 )

  pIMGDIR_EN_EXP := DllCall( "ImageHlp\ImageDirectoryEntryToData", "Ptr",pMappedAddress
                           , "Int",False, "UShort",IMAGE_DIRECTORY_ENTRY_EXPORT, "PtrP",nSize, "Ptr" )

  VA  := DllCall( "ImageHlp\ImageRvaToVa", "Ptr",pFileHeader, "Ptr",pMappedAddress, "UInt"
, RVA := NumGet( pIMGDIR_EN_EXP + 12 ), "Ptr",0, "Ptr" )

  If ( VA ) {
     VarSetCapacity( LIST, nSize, 0 )
     Loop % NumGet( pIMGDIR_EN_EXP + 24, "UInt" ) + 1
        LIST .= StrGet( Va + StrLen( LIST ), "" ) "`n"
             ,  ( Hdr = 0 and A_Index = 1 and ( Va := Va + StrLen( LIST ) ) ? LIST := "" : "" )
  }

  DllCall( "ImageHlp\UnMapAndLoad", "Ptr",&LOADED_IMAGE ),   DllCall( "FreeLibrary", "Ptr",hModule )

Return RTrim( List, "`n" )
}
- Here is a list of dll functions where an explicit W or A is required, created by the script above on a Windows 7 PC:

Code: Select all

[advapi32.dll]
"advapi32\NotifyServiceStatusChange" (A_IsUnicode?"W":"A")
"advapi32\ProcessIdleTasks" (A_IsUnicode?"W":"")

[advpack.dll]
"advpack\AddDelBackupEntry" (A_IsUnicode?"W":"A")
"advpack\AdvInstallFile" (A_IsUnicode?"W":"A")
"advpack\DelNode" (A_IsUnicode?"W":"A")
"advpack\DelNodeRunDLL32" (A_IsUnicode?"W":"A")
"advpack\DoInfInstall" (A_IsUnicode?"W":"A")
"advpack\ExecuteCab" (A_IsUnicode?"W":"A")
"advpack\ExtractFiles" (A_IsUnicode?"W":"A")
"advpack\FileSaveMarkNotExist" (A_IsUnicode?"W":"A")
"advpack\FileSaveRestore" (A_IsUnicode?"W":"A")
"advpack\FileSaveRestoreOnINF" (A_IsUnicode?"W":"A")
"advpack\GetVersionFromFile" (A_IsUnicode?"W":"A")
"advpack\GetVersionFromFileEx" (A_IsUnicode?"W":"A")
"advpack\LaunchINFSection" (A_IsUnicode?"W":"A")
"advpack\LaunchINFSectionEx" (A_IsUnicode?"W":"A")
"advpack\OpenINFEngine" (A_IsUnicode?"W":"A")
"advpack\RebootCheckOnInstall" (A_IsUnicode?"W":"A")
"advpack\RegInstall" (A_IsUnicode?"W":"A")
"advpack\RegisterOCX" (A_IsUnicode?"W":"")
"advpack\RegRestoreAll" (A_IsUnicode?"W":"A")
"advpack\RegSaveRestore" (A_IsUnicode?"W":"A")
"advpack\RegSaveRestoreOnINF" (A_IsUnicode?"W":"A")
"advpack\RunSetupCommand" (A_IsUnicode?"W":"A")
"advpack\SetPerUserSecValues" (A_IsUnicode?"W":"A")
"advpack\TranslateInfString" (A_IsUnicode?"W":"A")
"advpack\TranslateInfStringEx" (A_IsUnicode?"W":"A")
"advpack\UserInstStubWrapper" (A_IsUnicode?"W":"A")
"advpack\UserUnInstStubWrapper" (A_IsUnicode?"W":"A")

[api-ms-win-core-misc-l1-1-0.dll]
"api-ms-win-core-misc-l1-1-0\lstrcmp" (A_IsUnicode?"W":"A")
"api-ms-win-core-misc-l1-1-0\lstrcmpi" (A_IsUnicode?"W":"A")
"api-ms-win-core-misc-l1-1-0\lstrcpyn" (A_IsUnicode?"W":"A")
"api-ms-win-core-misc-l1-1-0\lstrlen" (A_IsUnicode?"W":"A")

[api-ms-win-core-processenvironment-l1-1-0.dll]
"api-ms-win-core-processenvironment-l1-1-0\GetEnvironmentStrings" (A_IsUnicode?"W":"A")

[atmlib.dll]
"atmlib\ATMAddFont" (A_IsUnicode?"W":"A")
"atmlib\ATMAddFontEx" (A_IsUnicode?"W":"A")
"atmlib\ATMBBoxBaseXYShowText" (A_IsUnicode?"W":"A")
"atmlib\ATMEnumFonts" (A_IsUnicode?"W":"A")
"atmlib\ATMEnumMMFonts" (A_IsUnicode?"W":"A")
"atmlib\ATMFontAvailable" (A_IsUnicode?"W":"A")
"atmlib\ATMFontStatus" (A_IsUnicode?"W":"A")
"atmlib\ATMGetBuildStr" (A_IsUnicode?"W":"A")
"atmlib\ATMGetFontInfo" (A_IsUnicode?"W":"A")
"atmlib\ATMGetFontPaths" (A_IsUnicode?"W":"A")
"atmlib\ATMGetGlyphList" (A_IsUnicode?"W":"A")
"atmlib\ATMGetMenuName" (A_IsUnicode?"W":"A")
"atmlib\ATMGetNtmFields" (A_IsUnicode?"W":"A")
"atmlib\ATMGetOutline" (A_IsUnicode?"W":"A")
"atmlib\ATMGetPostScriptName" (A_IsUnicode?"W":"A")
"atmlib\ATMGetVersionEx" (A_IsUnicode?"W":"A")
"atmlib\ATMMakePFM" (A_IsUnicode?"W":"A")
"atmlib\ATMMakePSS" (A_IsUnicode?"W":"A")
"atmlib\ATMRemoveFont" (A_IsUnicode?"W":"A")
"atmlib\ATMXYShowText" (A_IsUnicode?"W":"A")

[avifil32.dll]
"avifil32\AVIBuildFilter" (A_IsUnicode?"W":"A")
"avifil32\AVIFileCreateStream" (A_IsUnicode?"W":"A")
"avifil32\AVIFileInfo" (A_IsUnicode?"W":"A")
"avifil32\AVIFileOpen" (A_IsUnicode?"W":"A")
"avifil32\AVISave" (A_IsUnicode?"W":"A")
"avifil32\AVISaveV" (A_IsUnicode?"W":"A")
"avifil32\AVIStreamInfo" (A_IsUnicode?"W":"A")
"avifil32\AVIStreamOpenFromFile" (A_IsUnicode?"W":"A")
"avifil32\EditStreamSetInfo" (A_IsUnicode?"W":"A")
"avifil32\EditStreamSetName" (A_IsUnicode?"W":"A")

[basecsp.dll]
"basecsp\CPAcquireContext" (A_IsUnicode?"W":"")

[comctl32.dll]
"comctl32\CreatePropertySheetPage" (A_IsUnicode?"W":"A")
"comctl32\CreateStatusWindow" (A_IsUnicode?"W":"A")
"comctl32\DrawStatusText" (A_IsUnicode?"W":"A")
"comctl32\ImageList_LoadImage" (A_IsUnicode?"W":"A")
"comctl32\PropertySheet" (A_IsUnicode?"W":"A")

[cryptext.dll]
"cryptext\CryptExtAddCER" (A_IsUnicode?"W":"")
"cryptext\CryptExtAddCRL" (A_IsUnicode?"W":"")
"cryptext\CryptExtAddCTL" (A_IsUnicode?"W":"")
"cryptext\CryptExtAddP7R" (A_IsUnicode?"W":"")
"cryptext\CryptExtAddPFX" (A_IsUnicode?"W":"")
"cryptext\CryptExtAddSPC" (A_IsUnicode?"W":"")
"cryptext\CryptExtOpenCAT" (A_IsUnicode?"W":"")
"cryptext\CryptExtOpenCER" (A_IsUnicode?"W":"")
"cryptext\CryptExtOpenCRL" (A_IsUnicode?"W":"")
"cryptext\CryptExtOpenCTL" (A_IsUnicode?"W":"")
"cryptext\CryptExtOpenP7R" (A_IsUnicode?"W":"")
"cryptext\CryptExtOpenPKCS7" (A_IsUnicode?"W":"")
"cryptext\CryptExtOpenSTR" (A_IsUnicode?"W":"")

[cscui.dll]
"cscui\CSCOptions_RunDLL" (A_IsUnicode?"W":"A")

[dbghelp.dll]
"dbghelp\DbgHelpCreateUserDump" (A_IsUnicode?"W":"")
"dbghelp\EnumDirTree" (A_IsUnicode?"W":"")
"dbghelp\EnumerateLoadedModulesEx" (A_IsUnicode?"W":"")
"dbghelp\FindDebugInfoFileEx" (A_IsUnicode?"W":"")
"dbghelp\FindExecutableImageEx" (A_IsUnicode?"W":"")
"dbghelp\SearchTreeForFile" (A_IsUnicode?"W":"")
"dbghelp\SymAddSourceStream" (A_IsUnicode?"W":"A")
"dbghelp\SymAddSymbol" (A_IsUnicode?"W":"")
"dbghelp\SymDeleteSymbol" (A_IsUnicode?"W":"")
"dbghelp\SymEnumerateSymbols" (A_IsUnicode?"W":"")
"dbghelp\SymEnumLines" (A_IsUnicode?"W":"")
"dbghelp\SymEnumSourceFiles" (A_IsUnicode?"W":"")
"dbghelp\SymEnumSourceLines" (A_IsUnicode?"W":"")
"dbghelp\SymEnumSymbols" (A_IsUnicode?"W":"")
"dbghelp\SymEnumSymbolsForAddr" (A_IsUnicode?"W":"")
"dbghelp\SymEnumTypes" (A_IsUnicode?"W":"")
"dbghelp\SymEnumTypesByName" (A_IsUnicode?"W":"")
"dbghelp\SymFindDebugInfoFile" (A_IsUnicode?"W":"")
"dbghelp\SymFindExecutableImage" (A_IsUnicode?"W":"")
"dbghelp\SymFindFileInPath" (A_IsUnicode?"W":"")
"dbghelp\SymFromAddr" (A_IsUnicode?"W":"")
"dbghelp\SymFromIndex" (A_IsUnicode?"W":"")
"dbghelp\SymFromName" (A_IsUnicode?"W":"")
"dbghelp\SymFromToken" (A_IsUnicode?"W":"")
"dbghelp\SymGetHomeDirectory" (A_IsUnicode?"W":"")
"dbghelp\SymGetModuleInfo" (A_IsUnicode?"W":"")
"dbghelp\SymGetScope" (A_IsUnicode?"W":"")
"dbghelp\SymGetSearchPath" (A_IsUnicode?"W":"")
"dbghelp\SymGetSourceFile" (A_IsUnicode?"W":"")
"dbghelp\SymGetSourceFileFromToken" (A_IsUnicode?"W":"")
"dbghelp\SymGetSourceFileToken" (A_IsUnicode?"W":"")
"dbghelp\SymGetSourceVarFromToken" (A_IsUnicode?"W":"")
"dbghelp\SymGetSymbolFile" (A_IsUnicode?"W":"")
"dbghelp\SymGetTypeFromName" (A_IsUnicode?"W":"")
"dbghelp\SymInitialize" (A_IsUnicode?"W":"")
"dbghelp\SymLoadModuleEx" (A_IsUnicode?"W":"")
"dbghelp\SymMatchFileName" (A_IsUnicode?"W":"")
"dbghelp\SymMatchString" (A_IsUnicode?"W":"A")
"dbghelp\SymNext" (A_IsUnicode?"W":"")
"dbghelp\SymPrev" (A_IsUnicode?"W":"")
"dbghelp\SymSearch" (A_IsUnicode?"W":"")
"dbghelp\SymSetHomeDirectory" (A_IsUnicode?"W":"")
"dbghelp\SymSetSearchPath" (A_IsUnicode?"W":"")
"dbghelp\SymSrvDeltaName" (A_IsUnicode?"W":"")
"dbghelp\SymSrvGetFileIndexes" (A_IsUnicode?"W":"")
"dbghelp\SymSrvGetFileIndexInfo" (A_IsUnicode?"W":"")
"dbghelp\SymSrvGetFileIndexString" (A_IsUnicode?"W":"")
"dbghelp\SymSrvGetSupplement" (A_IsUnicode?"W":"")
"dbghelp\SymSrvIsStore" (A_IsUnicode?"W":"")
"dbghelp\SymSrvStoreFile" (A_IsUnicode?"W":"")
"dbghelp\SymSrvStoreSupplement" (A_IsUnicode?"W":"")
"dbghelp\UnDecorateSymbolName" (A_IsUnicode?"W":"")

[dbnetlib.dll]
"dbnetlib\ConnectionError" (A_IsUnicode?"W":"")
"dbnetlib\ConnectionOpen" (A_IsUnicode?"W":"")
"dbnetlib\ConnectionServerEnum" (A_IsUnicode?"W":"")

[dbnmpntw.dll]
"dbnmpntw\ConnectionError" (A_IsUnicode?"W":"")
"dbnmpntw\ConnectionOpen" (A_IsUnicode?"W":"")
"dbnmpntw\ConnectionServerEnum" (A_IsUnicode?"W":"")

[dfshim.dll]
"dfshim\ShArpMaintain" (A_IsUnicode?"W":"")
"dfshim\ShOpenVerbApplication" (A_IsUnicode?"W":"")
"dfshim\ShOpenVerbExtension" (A_IsUnicode?"W":"")
"dfshim\ShOpenVerbShortcut" (A_IsUnicode?"W":"")

[diskcopy.dll]
"diskcopy\DiskCopyRunDll" (A_IsUnicode?"W":"")

[dplayx.dll]
"dplayx\DirectPlayEnumerate" (A_IsUnicode?"W":"A")

[dsquery.dll]
"dsquery\OpenSavedDsQuery" (A_IsUnicode?"W":"")

[esent.dll]
"esent\JetAddColumn" (A_IsUnicode?"W":"A")
"esent\JetAttachDatabase" (A_IsUnicode?"W":"A")
"esent\JetAttachDatabase2" (A_IsUnicode?"W":"A")
"esent\JetAttachDatabaseWithStreaming" (A_IsUnicode?"W":"A")
"esent\JetBackup" (A_IsUnicode?"W":"A")
"esent\JetBackupInstance" (A_IsUnicode?"W":"A")
"esent\JetBeginDatabaseIncrementalReseed" (A_IsUnicode?"W":"A")
"esent\JetBeginSession" (A_IsUnicode?"W":"A")
"esent\JetCompact" (A_IsUnicode?"W":"A")
"esent\JetConvertDDL" (A_IsUnicode?"W":"A")
"esent\JetCreateDatabase" (A_IsUnicode?"W":"A")
"esent\JetCreateDatabase2" (A_IsUnicode?"W":"A")
"esent\JetCreateDatabaseWithStreaming" (A_IsUnicode?"W":"A")
"esent\JetCreateIndex" (A_IsUnicode?"W":"A")
"esent\JetCreateIndex2" (A_IsUnicode?"W":"A")
"esent\JetCreateInstance" (A_IsUnicode?"W":"A")
"esent\JetCreateInstance2" (A_IsUnicode?"W":"A")
"esent\JetCreateTable" (A_IsUnicode?"W":"A")
"esent\JetCreateTableColumnIndex" (A_IsUnicode?"W":"A")
"esent\JetCreateTableColumnIndex2" (A_IsUnicode?"W":"A")
"esent\JetDBUtilities" (A_IsUnicode?"W":"A")
"esent\JetDefragment" (A_IsUnicode?"W":"A")
"esent\JetDefragment2" (A_IsUnicode?"W":"A")
"esent\JetDefragment3" (A_IsUnicode?"W":"A")
"esent\JetDeleteColumn" (A_IsUnicode?"W":"A")
"esent\JetDeleteColumn2" (A_IsUnicode?"W":"A")
"esent\JetDeleteIndex" (A_IsUnicode?"W":"A")
"esent\JetDeleteTable" (A_IsUnicode?"W":"A")
"esent\JetDetachDatabase" (A_IsUnicode?"W":"A")
"esent\JetDetachDatabase2" (A_IsUnicode?"W":"A")
"esent\JetEnableMultiInstance" (A_IsUnicode?"W":"A")
"esent\JetEndDatabaseIncrementalReseed" (A_IsUnicode?"W":"A")
"esent\JetExternalRestore" (A_IsUnicode?"W":"A")
"esent\JetExternalRestore2" (A_IsUnicode?"W":"A")
"esent\JetGetAttachInfo" (A_IsUnicode?"W":"A")
"esent\JetGetAttachInfoInstance" (A_IsUnicode?"W":"A")
"esent\JetGetColumnInfo" (A_IsUnicode?"W":"A")
"esent\JetGetCurrentIndex" (A_IsUnicode?"W":"A")
"esent\JetGetDatabaseFileInfo" (A_IsUnicode?"W":"A")
"esent\JetGetDatabaseInfo" (A_IsUnicode?"W":"A")
"esent\JetGetIndexInfo" (A_IsUnicode?"W":"A")
"esent\JetGetInstanceInfo" (A_IsUnicode?"W":"A")
"esent\JetGetLogFileInfo" (A_IsUnicode?"W":"A")
"esent\JetGetLogInfo" (A_IsUnicode?"W":"A")
"esent\JetGetLogInfoInstance" (A_IsUnicode?"W":"A")
"esent\JetGetLogInfoInstance2" (A_IsUnicode?"W":"A")
"esent\JetGetObjectInfo" (A_IsUnicode?"W":"A")
"esent\JetGetSystemParameter" (A_IsUnicode?"W":"A")
"esent\JetGetTableColumnInfo" (A_IsUnicode?"W":"A")
"esent\JetGetTableIndexInfo" (A_IsUnicode?"W":"A")
"esent\JetGetTableInfo" (A_IsUnicode?"W":"A")
"esent\JetGetTruncateLogInfoInstance" (A_IsUnicode?"W":"A")
"esent\JetInit3" (A_IsUnicode?"W":"A")
"esent\JetOpenDatabase" (A_IsUnicode?"W":"A")
"esent\JetOpenFile" (A_IsUnicode?"W":"A")
"esent\JetOpenFileInstance" (A_IsUnicode?"W":"A")
"esent\JetOpenFileSectionInstance" (A_IsUnicode?"W":"A")
"esent\JetOpenTable" (A_IsUnicode?"W":"A")
"esent\JetOSSnapshotFreeze" (A_IsUnicode?"W":"A")
"esent\JetOSSnapshotGetFreezeInfo" (A_IsUnicode?"W":"A")
"esent\JetPatchDatabasePages" (A_IsUnicode?"W":"A")
"esent\JetRenameColumn" (A_IsUnicode?"W":"A")
"esent\JetRenameTable" (A_IsUnicode?"W":"A")
"esent\JetRestore" (A_IsUnicode?"W":"A")
"esent\JetRestore2" (A_IsUnicode?"W":"A")
"esent\JetRestoreInstance" (A_IsUnicode?"W":"A")
"esent\JetSetColumnDefaultValue" (A_IsUnicode?"W":"A")
"esent\JetSetCurrentIndex" (A_IsUnicode?"W":"A")
"esent\JetSetCurrentIndex2" (A_IsUnicode?"W":"A")
"esent\JetSetCurrentIndex3" (A_IsUnicode?"W":"A")
"esent\JetSetCurrentIndex4" (A_IsUnicode?"W":"A")
"esent\JetSetDatabaseSize" (A_IsUnicode?"W":"A")
"esent\JetSetSystemParameter" (A_IsUnicode?"W":"A")
"esent\JetSnapshotStart" (A_IsUnicode?"W":"A")
"esent\JetUpgradeDatabase" (A_IsUnicode?"W":"A")

[fveapi.dll]
"fveapi\FveEnableRawAccess" (A_IsUnicode?"W":"")
"fveapi\FveGetStatus" (A_IsUnicode?"W":"")
"fveapi\FveIsHybridVolume" (A_IsUnicode?"W":"")

[fveapibase.dll]
"fveapibase\FveGetStatus" (A_IsUnicode?"W":"")

[gdi32.dll]
"gdi32\GetGlyphOutline" (A_IsUnicode?"W":"A")
"gdi32\GetKerningPairs" (A_IsUnicode?"W":"A")

[hccutils.dll]
"hccutils\LoadSTRING" (A_IsUnicode?"W":"")

[htui.dll]
"htui\HTUI_ColorAdjustment" (A_IsUnicode?"W":"A")
"htui\HTUI_DeviceColorAdjustment" (A_IsUnicode?"W":"A")

[icm32.dll]
"icm32\CMCreateProfile" (A_IsUnicode?"W":"")
"icm32\CMCreateTransform" (A_IsUnicode?"W":"")
"icm32\CMCreateTransformExt" (A_IsUnicode?"W":"")

[IEAdvpack.dll]
"IEAdvpack\AddDelBackupEntry" (A_IsUnicode?"W":"A")
"IEAdvpack\AdvInstallFile" (A_IsUnicode?"W":"A")
"IEAdvpack\DelNode" (A_IsUnicode?"W":"A")
"IEAdvpack\DelNodeRunDLL32" (A_IsUnicode?"W":"A")
"IEAdvpack\DoInfInstall" (A_IsUnicode?"W":"A")
"IEAdvpack\ExecuteCab" (A_IsUnicode?"W":"A")
"IEAdvpack\ExtractFiles" (A_IsUnicode?"W":"A")
"IEAdvpack\FileSaveMarkNotExist" (A_IsUnicode?"W":"A")
"IEAdvpack\FileSaveRestore" (A_IsUnicode?"W":"A")
"IEAdvpack\FileSaveRestoreOnINF" (A_IsUnicode?"W":"A")
"IEAdvpack\GetVersionFromFile" (A_IsUnicode?"W":"A")
"IEAdvpack\GetVersionFromFileEx" (A_IsUnicode?"W":"A")
"IEAdvpack\LaunchINFSection" (A_IsUnicode?"W":"A")
"IEAdvpack\LaunchINFSectionEx" (A_IsUnicode?"W":"A")
"IEAdvpack\OpenINFEngine" (A_IsUnicode?"W":"A")
"IEAdvpack\RebootCheckOnInstall" (A_IsUnicode?"W":"A")
"IEAdvpack\RegInstall" (A_IsUnicode?"W":"A")
"IEAdvpack\RegisterOCX" (A_IsUnicode?"W":"")
"IEAdvpack\RegRestoreAll" (A_IsUnicode?"W":"A")
"IEAdvpack\RegSaveRestore" (A_IsUnicode?"W":"A")
"IEAdvpack\RegSaveRestoreOnINF" (A_IsUnicode?"W":"A")
"IEAdvpack\RunSetupCommand" (A_IsUnicode?"W":"A")
"IEAdvpack\SetPerUserSecValues" (A_IsUnicode?"W":"A")
"IEAdvpack\TranslateInfString" (A_IsUnicode?"W":"A")
"IEAdvpack\TranslateInfStringEx" (A_IsUnicode?"W":"A")
"IEAdvpack\UserInstStubWrapper" (A_IsUnicode?"W":"A")
"IEAdvpack\UserUnInstStubWrapper" (A_IsUnicode?"W":"A")

[ieframe.dll]
"ieframe\DoAddToFavDlg" (A_IsUnicode?"W":"")
"ieframe\DoOrganizeFavDlg" (A_IsUnicode?"W":"")

[imagehlp.dll]
"imagehlp\EnumerateLoadedModulesEx" (A_IsUnicode?"W":"")
"imagehlp\SymEnumerateSymbols" (A_IsUnicode?"W":"")
"imagehlp\SymEnumTypes" (A_IsUnicode?"W":"")
"imagehlp\SymEnumTypesByName" (A_IsUnicode?"W":"")
"imagehlp\SymFindFileInPath" (A_IsUnicode?"W":"")
"imagehlp\SymGetModuleInfo" (A_IsUnicode?"W":"")
"imagehlp\SymGetSymbolFile" (A_IsUnicode?"W":"")
"imagehlp\SymGetTypeFromName" (A_IsUnicode?"W":"")
"imagehlp\SymMatchFileName" (A_IsUnicode?"W":"")
"imagehlp\SymMatchString" (A_IsUnicode?"W":"A")
"imagehlp\SymSrvGetFileIndexes" (A_IsUnicode?"W":"")
"imagehlp\SymSrvGetFileIndexString" (A_IsUnicode?"W":"")

[inetcomm.dll]
"inetcomm\HrAthGetFileName" (A_IsUnicode?"W":"")
"inetcomm\HrGetLastOpenFileDirectory" (A_IsUnicode?"W":"")
"inetcomm\MimeOleGetFileInfo" (A_IsUnicode?"W":"")
"inetcomm\MimeOleParseRfc822Address" (A_IsUnicode?"W":"")
"inetcomm\MimeOleUnEscapeStringInPlace" (A_IsUnicode?"W":"")

[kernel32.dll]
"kernel32\GetBinaryType" (A_IsUnicode?"W":"A")
"kernel32\GetEnvironmentStrings" (A_IsUnicode?"W":"A")
"kernel32\lstrcat" (A_IsUnicode?"W":"A")
"kernel32\lstrcmp" (A_IsUnicode?"W":"A")
"kernel32\lstrcmpi" (A_IsUnicode?"W":"A")
"kernel32\lstrcpy" (A_IsUnicode?"W":"A")
"kernel32\lstrcpyn" (A_IsUnicode?"W":"A")
"kernel32\lstrlen" (A_IsUnicode?"W":"A")
"kernel32\Module32First" (A_IsUnicode?"W":"")
"kernel32\Module32Next" (A_IsUnicode?"W":"")
"kernel32\Process32First" (A_IsUnicode?"W":"")
"kernel32\Process32Next" (A_IsUnicode?"W":"")
"kernel32\ReplaceFile" (A_IsUnicode?"W":"A")

[KernelBase.dll]
"KernelBase\GetEnvironmentStrings" (A_IsUnicode?"W":"A")
"KernelBase\lstrcmp" (A_IsUnicode?"W":"A")
"KernelBase\lstrcmpi" (A_IsUnicode?"W":"A")
"KernelBase\lstrcpyn" (A_IsUnicode?"W":"A")
"KernelBase\lstrlen" (A_IsUnicode?"W":"A")

[linkinfo.dll]
"linkinfo\CreateLinkInfo" (A_IsUnicode?"W":"A")
"linkinfo\GetCanonicalPathInfo" (A_IsUnicode?"W":"A")
"linkinfo\ResolveLinkInfo" (A_IsUnicode?"W":"A")

[MaxxAudioAPOShell.dll]
"MaxxAudioAPOShell\WavesFX_Preset_GetName" (A_IsUnicode?"W":"")

[MaxxAudioAPOShell64.dll]
"MaxxAudioAPOShell64\WavesFX_Preset_GetName" (A_IsUnicode?"W":"")

[mscoree.dll]
"mscoree\GetHashFromAssemblyFile" (A_IsUnicode?"W":"")
"mscoree\GetHashFromFile" (A_IsUnicode?"W":"")

[msoert2.dll]
"msoert2\BrowseForFolder" (A_IsUnicode?"W":"")
"msoert2\CreateStreamOnHFile" (A_IsUnicode?"W":"")
"msoert2\CreateTempFile" (A_IsUnicode?"W":"")
"msoert2\FBuildTempPath" (A_IsUnicode?"W":"")
"msoert2\FIsHTMLFile" (A_IsUnicode?"W":"")
"msoert2\GenerateUniqueFileName" (A_IsUnicode?"W":"")
"msoert2\GetStoreRootDirectoryFromRegistryEntry" (A_IsUnicode?"W":"")
"msoert2\MessageBoxInst" (A_IsUnicode?"W":"")
"msoert2\OpenFileStream" (A_IsUnicode?"W":"")
"msoert2\OpenFileStreamShare" (A_IsUnicode?"W":"")
"msoert2\ReplaceChars" (A_IsUnicode?"W":"")
"msoert2\strtrim" (A_IsUnicode?"W":"")
"msoert2\UlStripWhitespace" (A_IsUnicode?"W":"")
"msoert2\WriteStreamToFile" (A_IsUnicode?"W":"")

[msrating.dll]
"msrating\RatingAccessDeniedDialog" (A_IsUnicode?"W":"")
"msrating\RatingAccessDeniedDialog2" (A_IsUnicode?"W":"")
"msrating\RatingCheckUserAccess" (A_IsUnicode?"W":"")
"msrating\RatingEnable" (A_IsUnicode?"W":"")
"msrating\RatingObtainQuery" (A_IsUnicode?"W":"")
"msrating\RatingSetupUI" (A_IsUnicode?"W":"")

[mssign32.dll]
"mssign32\PvkPrivateKeyAcquireContext" (A_IsUnicode?"":"A")
"mssign32\PvkPrivateKeyAcquireContextFromMemory" (A_IsUnicode?"":"A")
"mssign32\PvkPrivateKeyLoad" (A_IsUnicode?"":"A")
"mssign32\PvkPrivateKeyLoadFromMemory" (A_IsUnicode?"":"A")
"mssign32\PvkPrivateKeyReleaseContext" (A_IsUnicode?"":"A")
"mssign32\PvkPrivateKeySave" (A_IsUnicode?"":"A")
"mssign32\PvkPrivateKeySaveToMemory" (A_IsUnicode?"":"A")

[msvcr100.dll]
"msvcr100\_CRT_RTC_INIT" (A_IsUnicode?"W":"")
"msvcr100\_inp" (A_IsUnicode?"W":"")
"msvcr100\_outp" (A_IsUnicode?"W":"")

[msvcr110.dll]
"msvcr110\_CRT_RTC_INIT" (A_IsUnicode?"W":"")
"msvcr110\_inp" (A_IsUnicode?"W":"")
"msvcr110\_outp" (A_IsUnicode?"W":"")

[msvcr120.dll]
"msvcr120\_CRT_RTC_INIT" (A_IsUnicode?"W":"")
"msvcr120\_inp" (A_IsUnicode?"W":"")
"msvcr120\_outp" (A_IsUnicode?"W":"")

[msvcr120_clr0400.dll]
"msvcr120_clr0400\_CRT_RTC_INIT" (A_IsUnicode?"W":"")
"msvcr120_clr0400\_inp" (A_IsUnicode?"W":"")
"msvcr120_clr0400\_outp" (A_IsUnicode?"W":"")

[msvcr120d.dll]
"msvcr120d\_CRT_RTC_INIT" (A_IsUnicode?"W":"")
"msvcr120d\_CrtDbgReport" (A_IsUnicode?"W":"")
"msvcr120d\_inp" (A_IsUnicode?"W":"")
"msvcr120d\_outp" (A_IsUnicode?"W":"")

[msvcrt.dll]
"msvcrt\_CrtDbgReport" (A_IsUnicode?"W":"")
"msvcrt\_inp" (A_IsUnicode?"W":"")
"msvcrt\_outp" (A_IsUnicode?"W":"")

[msvfw32.dll]
"msvfw32\GetOpenFileNamePreview" (A_IsUnicode?"W":"A")
"msvfw32\MCIWndCreate" (A_IsUnicode?"W":"A")

[ntshrui.dll]
"ntshrui\GetLocalPathFromNetResource" (A_IsUnicode?"W":"A")
"ntshrui\GetNetResourceFromLocalPath" (A_IsUnicode?"W":"A")
"ntshrui\IsPathShared" (A_IsUnicode?"W":"A")

[odbc32.dll]
"odbc32\SQLBrowseConnect" (A_IsUnicode?"W":"A")
"odbc32\SQLColAttribute" (A_IsUnicode?"W":"A")
"odbc32\SQLColAttributes" (A_IsUnicode?"W":"A")
"odbc32\SQLColumnPrivileges" (A_IsUnicode?"W":"A")
"odbc32\SQLColumns" (A_IsUnicode?"W":"A")
"odbc32\SQLConnect" (A_IsUnicode?"W":"A")
"odbc32\SQLDataSources" (A_IsUnicode?"W":"A")
"odbc32\SQLDescribeCol" (A_IsUnicode?"W":"A")
"odbc32\SQLDriverConnect" (A_IsUnicode?"W":"A")
"odbc32\SQLDrivers" (A_IsUnicode?"W":"A")
"odbc32\SQLError" (A_IsUnicode?"W":"A")
"odbc32\SQLExecDirect" (A_IsUnicode?"W":"A")
"odbc32\SQLForeignKeys" (A_IsUnicode?"W":"A")
"odbc32\SQLGetConnectAttr" (A_IsUnicode?"W":"A")
"odbc32\SQLGetConnectOption" (A_IsUnicode?"W":"A")
"odbc32\SQLGetCursorName" (A_IsUnicode?"W":"A")
"odbc32\SQLGetDescField" (A_IsUnicode?"W":"A")
"odbc32\SQLGetDescRec" (A_IsUnicode?"W":"A")
"odbc32\SQLGetDiagField" (A_IsUnicode?"W":"A")
"odbc32\SQLGetDiagRec" (A_IsUnicode?"W":"A")
"odbc32\SQLGetInfo" (A_IsUnicode?"W":"A")
"odbc32\SQLGetStmtAttr" (A_IsUnicode?"W":"A")
"odbc32\SQLGetTypeInfo" (A_IsUnicode?"W":"A")
"odbc32\SQLNativeSql" (A_IsUnicode?"W":"A")
"odbc32\SQLPrepare" (A_IsUnicode?"W":"A")
"odbc32\SQLPrimaryKeys" (A_IsUnicode?"W":"A")
"odbc32\SQLProcedureColumns" (A_IsUnicode?"W":"A")
"odbc32\SQLProcedures" (A_IsUnicode?"W":"A")
"odbc32\SQLSetConnectAttr" (A_IsUnicode?"W":"A")
"odbc32\SQLSetConnectOption" (A_IsUnicode?"W":"A")
"odbc32\SQLSetCursorName" (A_IsUnicode?"W":"A")
"odbc32\SQLSetDescField" (A_IsUnicode?"W":"A")
"odbc32\SQLSetStmtAttr" (A_IsUnicode?"W":"A")
"odbc32\SQLSpecialColumns" (A_IsUnicode?"W":"A")
"odbc32\SQLStatistics" (A_IsUnicode?"W":"A")
"odbc32\SQLTablePrivileges" (A_IsUnicode?"W":"A")
"odbc32\SQLTables" (A_IsUnicode?"W":"A")

[odbccp32.dll]
"odbccp32\SQLConfigDataSource" (A_IsUnicode?"W":"")
"odbccp32\SQLConfigDriver" (A_IsUnicode?"W":"")
"odbccp32\SQLCreateDataSource" (A_IsUnicode?"W":"")
"odbccp32\SQLCreateDataSourceEx" (A_IsUnicode?"W":"")
"odbccp32\SQLGetAvailableDrivers" (A_IsUnicode?"W":"")
"odbccp32\SQLGetInstalledDrivers" (A_IsUnicode?"W":"")
"odbccp32\SQLGetPrivateProfileString" (A_IsUnicode?"W":"")
"odbccp32\SQLGetTranslator" (A_IsUnicode?"W":"")
"odbccp32\SQLInstallDriver" (A_IsUnicode?"W":"")
"odbccp32\SQLInstallDriverEx" (A_IsUnicode?"W":"")
"odbccp32\SQLInstallDriverManager" (A_IsUnicode?"W":"")
"odbccp32\SQLInstallerError" (A_IsUnicode?"W":"")
"odbccp32\SQLInstallODBC" (A_IsUnicode?"W":"")
"odbccp32\SQLInstallTranslator" (A_IsUnicode?"W":"")
"odbccp32\SQLInstallTranslatorEx" (A_IsUnicode?"W":"")
"odbccp32\SQLPostInstallerError" (A_IsUnicode?"W":"")
"odbccp32\SQLReadFileDSN" (A_IsUnicode?"W":"")
"odbccp32\SQLRemoveDriver" (A_IsUnicode?"W":"")
"odbccp32\SQLRemoveDSNFromIni" (A_IsUnicode?"W":"")
"odbccp32\SQLRemoveTranslator" (A_IsUnicode?"W":"")
"odbccp32\SQLValidDSN" (A_IsUnicode?"W":"")
"odbccp32\SQLWriteDSNToIni" (A_IsUnicode?"W":"")
"odbccp32\SQLWriteFileDSN" (A_IsUnicode?"W":"")
"odbccp32\SQLWritePrivateProfileString" (A_IsUnicode?"W":"")

[odbcjt32.dll]
"odbcjt32\ConfigDSN" (A_IsUnicode?"W":"")

[odbctrac.dll]
"odbctrac\TraceSQLAllocHandleStd" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLBrowseConnect" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLColAttribute" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLColAttributes" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLColumnPrivileges" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLColumns" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLConnect" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLDataSources" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLDescribeCol" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLDriverConnect" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLDrivers" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLError" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLExecDirect" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLForeignKeys" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLGetConnectAttr" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLGetConnectOption" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLGetCursorName" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLGetDescField" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLGetDescRec" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLGetDiagField" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLGetDiagRec" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLGetInfo" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLGetStmtAttr" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLGetTypeInfo" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLNativeSql" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLPrepare" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLPrimaryKeys" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLProcedureColumns" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLProcedures" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLSetConnectAttr" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLSetConnectOption" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLSetCursorName" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLSetDescField" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLSetStmtAttr" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLSpecialColumns" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLStatistics" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLTablePrivileges" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLTables" (A_IsUnicode?"W":"")

[oleaut32.dll]
"oleaut32\LHashValOfNameSys" (A_IsUnicode?"":"A")

[pdh.dll]
"pdh\PdhOpenQuery" (A_IsUnicode?"W":"A")

[Query.dll]
"Query\LocateCatalogs" (A_IsUnicode?"W":"A")

[rasman.dll]
"rasman\RasGetDeviceName" (A_IsUnicode?"W":"")

[rpcrt4.dll]
"rpcrt4\I_RpcBindingInqDynamicEndpoint" (A_IsUnicode?"W":"A")
"rpcrt4\I_RpcNsBindingSetEntryName" (A_IsUnicode?"W":"A")

[scrobj.dll]
"scrobj\DllRegisterServerEx" (A_IsUnicode?"W":"A")
"scrobj\GenerateTypeLib" (A_IsUnicode?"W":"")

[sechost.dll]
"sechost\NotifyServiceStatusChange" (A_IsUnicode?"W":"A")

[SensorsApi.dll]
"SensorsApi\SensorPermissionsHandler" (A_IsUnicode?"W":"A")

[setupapi.dll]
"setupapi\InstallHinfSection" (A_IsUnicode?"W":"A")
"setupapi\SetupCommitFileQueue" (A_IsUnicode?"W":"A")
"setupapi\SetupDefaultQueueCallback" (A_IsUnicode?"W":"A")
"setupapi\SetupScanFileQueue" (A_IsUnicode?"W":"A")

[sfc.dll]
"sfc\SRSetRestorePoint" (A_IsUnicode?"W":"A")

[shdocvw.dll]
"shdocvw\DoAddToFavDlg" (A_IsUnicode?"W":"")
"shdocvw\DoOrganizeFavDlg" (A_IsUnicode?"W":"")

[shell32.dll]
"shell32\Control_RunDLL" (A_IsUnicode?"W":"A")
"shell32\DragQueryFile" (A_IsUnicode?"W":"A")
"shell32\ExtractIconEx" (A_IsUnicode?"W":"A")
"shell32\ILCreateFromPath" (A_IsUnicode?"W":"A")
"shell32\IsLFNDrive" (A_IsUnicode?"W":"A")
"shell32\OpenAs_RunDLL" (A_IsUnicode?"W":"A")
"shell32\Options_RunDLL" (A_IsUnicode?"W":"A")
"shell32\PrintersGetCommand_RunDLL" (A_IsUnicode?"W":"A")
"shell32\SHBrowseForFolder" (A_IsUnicode?"W":"A")
"shell32\Shell_GetCachedImageIndex" (A_IsUnicode?"W":"A")
"shell32\Shell_NotifyIcon" (A_IsUnicode?"W":"A")
"shell32\ShellExec_RunDLL" (A_IsUnicode?"W":"A")
"shell32\ShellExecuteEx" (A_IsUnicode?"W":"A")
"shell32\SHFileOperation" (A_IsUnicode?"W":"A")
"shell32\SHGetFileInfo" (A_IsUnicode?"W":"A")
"shell32\SHGetNewLinkInfo" (A_IsUnicode?"W":"A")
"shell32\SHGetPathFromIDList" (A_IsUnicode?"W":"A")
"shell32\SHHelpShortcuts_RunDLL" (A_IsUnicode?"W":"A")

[shimgvw.dll]
"shimgvw\ImageView_Fullscreen" (A_IsUnicode?"W":"A")
"shimgvw\ImageView_PrintTo" (A_IsUnicode?"W":"A")

[shsetup.dll]
"shsetup\SHUnattendedSetup" (A_IsUnicode?"W":"A")

[sti.dll]
"sti\StiCreateInstance" (A_IsUnicode?"W":"")

[streamci.dll]
"streamci\StreamingDeviceRemove" (A_IsUnicode?"W":"A")
"streamci\StreamingDeviceSetup" (A_IsUnicode?"W":"A")

[sxs.dll]
"sxs\SxsRunDllInstallAssembly" (A_IsUnicode?"W":"")

[tapi32.dll]
"tapi32\lineAddProvider" (A_IsUnicode?"W":"A")
"tapi32\lineBlindTransfer" (A_IsUnicode?"W":"A")
"tapi32\lineConfigDialog" (A_IsUnicode?"W":"A")
"tapi32\lineConfigDialogEdit" (A_IsUnicode?"W":"A")
"tapi32\lineDial" (A_IsUnicode?"W":"A")
"tapi32\lineForward" (A_IsUnicode?"W":"A")
"tapi32\lineGatherDigits" (A_IsUnicode?"W":"A")
"tapi32\lineGenerateDigits" (A_IsUnicode?"W":"A")
"tapi32\lineGetAddressCaps" (A_IsUnicode?"W":"A")
"tapi32\lineGetAddressID" (A_IsUnicode?"W":"A")
"tapi32\lineGetAddressStatus" (A_IsUnicode?"W":"A")
"tapi32\lineGetAppPriority" (A_IsUnicode?"W":"A")
"tapi32\lineGetCallInfo" (A_IsUnicode?"W":"A")
"tapi32\lineGetCountry" (A_IsUnicode?"W":"A")
"tapi32\lineGetDevCaps" (A_IsUnicode?"W":"A")
"tapi32\lineGetDevConfig" (A_IsUnicode?"W":"A")
"tapi32\lineGetIcon" (A_IsUnicode?"W":"A")
"tapi32\lineGetID" (A_IsUnicode?"W":"A")
"tapi32\lineGetLineDevStatus" (A_IsUnicode?"W":"A")
"tapi32\lineGetProviderList" (A_IsUnicode?"W":"A")
"tapi32\lineGetRequest" (A_IsUnicode?"W":"A")
"tapi32\lineGetTranslateCaps" (A_IsUnicode?"W":"A")
"tapi32\lineHandoff" (A_IsUnicode?"W":"A")
"tapi32\lineMakeCall" (A_IsUnicode?"W":"A")
"tapi32\lineOpen" (A_IsUnicode?"W":"A")
"tapi32\linePark" (A_IsUnicode?"W":"A")
"tapi32\linePickup" (A_IsUnicode?"W":"A")
"tapi32\linePrepareAddToConference" (A_IsUnicode?"W":"A")
"tapi32\lineRedirect" (A_IsUnicode?"W":"A")
"tapi32\lineSetAppPriority" (A_IsUnicode?"W":"A")
"tapi32\lineSetDevConfig" (A_IsUnicode?"W":"A")
"tapi32\lineSetTollList" (A_IsUnicode?"W":"A")
"tapi32\lineSetupConference" (A_IsUnicode?"W":"A")
"tapi32\lineSetupTransfer" (A_IsUnicode?"W":"A")
"tapi32\lineTranslateAddress" (A_IsUnicode?"W":"A")
"tapi32\lineTranslateDialog" (A_IsUnicode?"W":"A")
"tapi32\lineUnpark" (A_IsUnicode?"W":"A")
"tapi32\phoneConfigDialog" (A_IsUnicode?"W":"A")
"tapi32\phoneGetButtonInfo" (A_IsUnicode?"W":"A")
"tapi32\phoneGetDevCaps" (A_IsUnicode?"W":"A")
"tapi32\phoneGetIcon" (A_IsUnicode?"W":"A")
"tapi32\phoneGetID" (A_IsUnicode?"W":"A")
"tapi32\phoneGetStatus" (A_IsUnicode?"W":"A")
"tapi32\phoneSetButtonInfo" (A_IsUnicode?"W":"A")
"tapi32\tapiGetLocationInfo" (A_IsUnicode?"W":"A")
"tapi32\tapiRequestMakeCall" (A_IsUnicode?"W":"A")
"tapi32\tapiRequestMediaCall" (A_IsUnicode?"W":"A")

[ucrtbased.dll]
"ucrtbased\_CrtDbgReport" (A_IsUnicode?"W":"")

[unrar.dll]
"unrar\RARProcessFile" (A_IsUnicode?"W":"")

[unrar64.dll]
"unrar64\RARProcessFile" (A_IsUnicode?"W":"")

[url.dll]
"url\FileProtocolHandler" (A_IsUnicode?"":"A")
"url\MailToProtocolHandler" (A_IsUnicode?"":"A")
"url\OpenURL" (A_IsUnicode?"":"A")
"url\TelnetProtocolHandler" (A_IsUnicode?"":"A")

[user32.dll]
"user32\BroadcastSystemMessage" (A_IsUnicode?"W":"A")
"user32\CallMsgFilter" (A_IsUnicode?"W":"A")
"user32\GetAltTabInfo" (A_IsUnicode?"W":"A")
"user32\GetWindowModuleFileName" (A_IsUnicode?"W":"A")
"user32\IsDialogMessage" (A_IsUnicode?"W":"A")
"user32\RealGetWindowClass" (A_IsUnicode?"W":"A")
"user32\TranslateAccelerator" (A_IsUnicode?"W":"A")

[wdscore.dll]
"wdscore\GetMajorTask" (A_IsUnicode?"":"A")
"wdscore\GetMinorTask" (A_IsUnicode?"":"A")

[wiashext.dll]
"wiashext\AddDeviceWasChosen" (A_IsUnicode?"W":"A")

[wininet.dll]
"wininet\DeleteUrlCacheEntry" (A_IsUnicode?"W":"A")
"wininet\InternetConfirmZoneCrossing" (A_IsUnicode?"W":"A")
"wininet\InternetDial" (A_IsUnicode?"W":"A")
"wininet\InternetGetCertByURL" (A_IsUnicode?"":"A")
"wininet\InternetGetConnectedStateEx" (A_IsUnicode?"W":"A")
"wininet\InternetGetSecurityInfoByURL" (A_IsUnicode?"W":"A")
"wininet\InternetGoOnline" (A_IsUnicode?"W":"A")
"wininet\InternetSetDialState" (A_IsUnicode?"W":"A")
"wininet\InternetSetStatusCallback" (A_IsUnicode?"W":"A")
"wininet\InternetShowSecurityInfoByURL" (A_IsUnicode?"W":"A")
"wininet\InternetTimeFromSystemTime" (A_IsUnicode?"W":"A")
"wininet\InternetTimeToSystemTime" (A_IsUnicode?"W":"A")
"wininet\SetUrlCacheEntryGroup" (A_IsUnicode?"W":"A")
"wininet\UnlockUrlCacheEntryFile" (A_IsUnicode?"W":"A")

[winmm.dll]
"winmm\PlaySound" (A_IsUnicode?"W":"A")

[Wldap32.dll]
"Wldap32\cldap_open" (A_IsUnicode?"W":"A")
"Wldap32\ldap_add" (A_IsUnicode?"W":"A")
"Wldap32\ldap_add_ext" (A_IsUnicode?"W":"A")
"Wldap32\ldap_add_ext_s" (A_IsUnicode?"W":"A")
"Wldap32\ldap_add_s" (A_IsUnicode?"W":"A")
"Wldap32\ldap_bind" (A_IsUnicode?"W":"A")
"Wldap32\ldap_bind_s" (A_IsUnicode?"W":"A")
"Wldap32\ldap_compare" (A_IsUnicode?"W":"A")
"Wldap32\ldap_compare_ext" (A_IsUnicode?"W":"A")
"Wldap32\ldap_compare_ext_s" (A_IsUnicode?"W":"A")
"Wldap32\ldap_compare_s" (A_IsUnicode?"W":"A")
"Wldap32\ldap_control_free" (A_IsUnicode?"W":"A")
"Wldap32\ldap_controls_free" (A_IsUnicode?"W":"A")
"Wldap32\ldap_count_values" (A_IsUnicode?"W":"A")
"Wldap32\ldap_create_page_control" (A_IsUnicode?"W":"A")
"Wldap32\ldap_create_sort_control" (A_IsUnicode?"W":"A")
"Wldap32\ldap_delete" (A_IsUnicode?"W":"A")
"Wldap32\ldap_delete_ext" (A_IsUnicode?"W":"A")
"Wldap32\ldap_delete_ext_s" (A_IsUnicode?"W":"A")
"Wldap32\ldap_delete_s" (A_IsUnicode?"W":"A")
"Wldap32\ldap_dn2ufn" (A_IsUnicode?"W":"A")
"Wldap32\ldap_err2string" (A_IsUnicode?"W":"A")
"Wldap32\ldap_escape_filter_element" (A_IsUnicode?"W":"A")
"Wldap32\ldap_explode_dn" (A_IsUnicode?"W":"A")
"Wldap32\ldap_extended_operation" (A_IsUnicode?"W":"A")
"Wldap32\ldap_first_attribute" (A_IsUnicode?"W":"A")
"Wldap32\ldap_free_controls" (A_IsUnicode?"W":"A")
"Wldap32\ldap_get_dn" (A_IsUnicode?"W":"A")
"Wldap32\ldap_get_option" (A_IsUnicode?"W":"A")
"Wldap32\ldap_get_values" (A_IsUnicode?"W":"A")
"Wldap32\ldap_get_values_len" (A_IsUnicode?"W":"A")
"Wldap32\ldap_init" (A_IsUnicode?"W":"A")
"Wldap32\ldap_memfree" (A_IsUnicode?"W":"A")
"Wldap32\ldap_modify" (A_IsUnicode?"W":"A")
"Wldap32\ldap_modify_ext" (A_IsUnicode?"W":"A")
"Wldap32\ldap_modify_ext_s" (A_IsUnicode?"W":"A")
"Wldap32\ldap_modify_s" (A_IsUnicode?"W":"A")
"Wldap32\ldap_modrdn" (A_IsUnicode?"W":"A")
"Wldap32\ldap_modrdn2" (A_IsUnicode?"W":"A")
"Wldap32\ldap_modrdn2_s" (A_IsUnicode?"W":"A")
"Wldap32\ldap_modrdn_s" (A_IsUnicode?"W":"A")
"Wldap32\ldap_next_attribute" (A_IsUnicode?"W":"A")
"Wldap32\ldap_open" (A_IsUnicode?"W":"A")
"Wldap32\ldap_parse_page_control" (A_IsUnicode?"W":"A")
"Wldap32\ldap_parse_reference" (A_IsUnicode?"W":"A")
"Wldap32\ldap_parse_result" (A_IsUnicode?"W":"A")
"Wldap32\ldap_parse_sort_control" (A_IsUnicode?"W":"A")
"Wldap32\ldap_rename_ext" (A_IsUnicode?"W":"A")
"Wldap32\ldap_rename_ext_s" (A_IsUnicode?"W":"A")
"Wldap32\ldap_search" (A_IsUnicode?"W":"A")
"Wldap32\ldap_search_ext" (A_IsUnicode?"W":"A")
"Wldap32\ldap_search_ext_s" (A_IsUnicode?"W":"A")
"Wldap32\ldap_search_init_page" (A_IsUnicode?"W":"A")
"Wldap32\ldap_search_s" (A_IsUnicode?"W":"A")
"Wldap32\ldap_search_st" (A_IsUnicode?"W":"A")
"Wldap32\ldap_set_option" (A_IsUnicode?"W":"A")
"Wldap32\ldap_simple_bind" (A_IsUnicode?"W":"A")
"Wldap32\ldap_simple_bind_s" (A_IsUnicode?"W":"A")
"Wldap32\ldap_sslinit" (A_IsUnicode?"W":"A")
"Wldap32\ldap_ufn2dn" (A_IsUnicode?"W":"A")
"Wldap32\ldap_value_free" (A_IsUnicode?"W":"A")

[ws2_32.dll]
"ws2_32\freeaddrinfo" (A_IsUnicode?"W":"")
"ws2_32\FreeAddrInfoEx" (A_IsUnicode?"W":"")
"ws2_32\getaddrinfo" (A_IsUnicode?"W":"")
"ws2_32\getnameinfo" (A_IsUnicode?"W":"")

[xolehlp.dll]
"xolehlp\DtcGetTransactionManagerEx" (A_IsUnicode?"W":"A")
- See also:
[list a dll's functions]
LoadPicture() from variable - AutoHotkey Community
https://autohotkey.com/boards/viewtopic.php?f=5&t=39002&p=181321#p181321
homepage | tutorials | wish list | fun threads | donate
WARNING: copy your posts/messages before hitting Submit as you may lose them due to CAPTCHA

phucnguyenphi123
Posts: 18
Joined: 28 Jul 2020, 03:58

Re: list of dll functions where an explicit W or A is required

Post by phucnguyenphi123 » 30 Jul 2020, 06:29

jeeswg wrote:
30 Oct 2019, 06:25
DllCall() - Syntax & Usage | AutoHotkey
https://www.autohotkey.com/docs/commands/DllCall.htm
If no function can be found by the given name, an A (ANSI) or W (Unicode) suffix is automatically appended based on which version of AutoHotkey is running the script.
- So, in AutoHotkey, when you use DllCall, and call 'DllName\Func', if Func does not exist in the dll, then DllName\FuncW or DllName\FuncA is called depending on whether the AutoHotkey exe is Unicode or ANSI.
- There are many dll functions where FuncW and FuncA exist, but Func doesn't, and so people assume they can omit the W or A. However, sometimes Func does exist.
- So you might have a dll containing: the pair Func/FuncW, the pair Func/FuncA (unusual), or all three Func/FuncW/FuncA.
- For example, winmm.dll contains PlaySound, PlaySoundA and PlaySoundW. If you specify PlaySound, that will only work on ANSI versions of AHK, so you must explicitly specify W or A:

Code: Select all

;q:: ;test PlaySound
vPath := "C:\Windows\Media\tada.wav"
;SND_FILENAME := 0x20000 ;SND_NODEFAULT := 0x2 ;source: playsoundapi.h
DllCall("winmm\PlaySound", "Str",vPath, "Ptr",0, "UInt",0x20002) ;works on AHK ANSI versions only
MsgBox
DllCall("winmm\PlaySound" (A_IsUnicode?"W":"A"), "Str",vPath, "Ptr",0, "UInt",0x20002)
MsgBox
return
- Here is a script that will go through dlls in C:\Windows\System32 and C:\Windows\SysWOW64, look for instances of Func/FuncW and/or Func/FuncA, and list the appropriate 'DllName\Func' string for use with DllCall. Note: it makes use of DllListExports by SKAN.

Code: Select all

;q:: ;list dll functions - list XXXW/XXXA functions where XXX exists
if A_Is64bitOS
	DllCall("kernel32\Wow64DisableWow64FsRedirection", "Ptr*",0)
vDir32 := "C:\Windows\SysWOW64" ;SysWOW64 *is* 32-bit
vDir64 := "C:\Windows\System32"

;get dll list:
vListDll := ""
VarSetCapacity(vListDll, 1000000*2)
Loop Files, % vDir32 "\*.dll", % "F"
	vListDll .= A_LoopFileName "`n"
Loop Files, % vDir64 "\*.dll", % "F"
	vListDll .= A_LoopFileName "`n"
Sort, vListDll, U
vListDll := Trim(vListDll, "`n")

vSfxWA = (A_IsUnicode?"W":"A")
vSfxWOrBlank = (A_IsUnicode?"W":"")
vSfxAOrBlank = (A_IsUnicode?"":"A") ;this would be unusual

vOutput := ""
VarSetCapacity(vOutput, 1000000*2)

;get function list (and check for XXX/XXXA/XXXW functions)
Loop Parse, vListDll, % "`n", % "`r"
{
	vDllName := A_LoopField
	vPathDll32 := vDir32 "\" vDllName
	vPathDll64 := vDir64 "\" vDllName
	vText32 := FileExist(vPathDll32) ? DllListExports(vPathDll32) : ""
	vText64 := FileExist(vPathDll64) ? DllListExports(vPathDll64) : ""
	vText := vText32 "`n" vText64
	Sort, vText, U
	vText := Trim(vText, "`n")

	;oMap := Map()
	oMap := Object()
	vOutputTemp := ""
	vDllNameNoExt := RegExReplace(vDllName, ".dll$")
	vPfx := Chr(34) vDllNameNoExt "\"
	vDQSp := Chr(34) " "
	Loop Parse, vText, % "`n"
	{
		vTemp := A_LoopField
		oMap["z" vTemp] := 1
	}
	Loop Parse, vText, % "`n"
	{
		vTemp := A_LoopField
		if oMap.HasKey("z" vTemp "A")
		&& oMap.HasKey("z" vTemp "W")
			vOutputTemp .= vPfx vTemp vDQSp vSfxWA "`r`n"
		else if oMap.HasKey("z" vTemp "W")
			vOutputTemp .= vPfx vTemp vDQSp vSfxWOrBlank "`r`n"
		else if oMap.HasKey("z" vTemp "A")
			vOutputTemp .= vPfx vTemp vDQSp vSfxAOrBlank "`r`n"
	}
	if !(vOutputTemp = "")
		vOutput .= "[" vDllName "]" "`r`n" vOutputTemp "`r`n"
}
vOutput := SubStr(vOutput, 1, -2)
vPath := A_Desktop "\z dll functions that need an explicit W or A " A_Now ".txt"
FileAppend, % vOutput, % "*" vPath, UTF-8
;Clipboard := vOutput
MsgBox, % "done"
return

;==================================================

;DllListExports() - List of Function exports of a DLL - AutoHotkey Community
;https://autohotkey.com/boards/viewtopic.php?f=6&t=4563

DllListExports( DLL, Hdr := 0 ) {   ;   By SKAN,  http goo.gl /DsMqa6  Broken Link for safety ,  CD:26/Aug/2010 | MD:14/Sep/2014

Local LOADED_IMAGE, nSize := VarSetCapacity( LOADED_IMAGE, 84, 0 ), pMappedAddress, pFileHeader
    , pIMGDIR_EN_EXP, IMAGE_DIRECTORY_ENTRY_EXPORT := 0, RVA, VA, LIST := ""
    , hModule := DllCall( "LoadLibrary", "Str","ImageHlp.dll", "Ptr" )

  If ! DllCall( "ImageHlp\MapAndLoad", "AStr",DLL, "Int",0, "Ptr",&LOADED_IMAGE, "Int",True, "Int",True )
    Return

  pMappedAddress := NumGet( LOADED_IMAGE, ( A_PtrSize = 4 ) ?  8 : 16 )
  pFileHeader    := NumGet( LOADED_IMAGE, ( A_PtrSize = 4 ) ? 12 : 24 )

  pIMGDIR_EN_EXP := DllCall( "ImageHlp\ImageDirectoryEntryToData", "Ptr",pMappedAddress
                           , "Int",False, "UShort",IMAGE_DIRECTORY_ENTRY_EXPORT, "PtrP",nSize, "Ptr" )

  VA  := DllCall( "ImageHlp\ImageRvaToVa", "Ptr",pFileHeader, "Ptr",pMappedAddress, "UInt"
, RVA := NumGet( pIMGDIR_EN_EXP + 12 ), "Ptr",0, "Ptr" )

  If ( VA ) {
     VarSetCapacity( LIST, nSize, 0 )
     Loop % NumGet( pIMGDIR_EN_EXP + 24, "UInt" ) + 1
        LIST .= StrGet( Va + StrLen( LIST ), "" ) "`n"
             ,  ( Hdr = 0 and A_Index = 1 and ( Va := Va + StrLen( LIST ) ) ? LIST := "" : "" )
  }

  DllCall( "ImageHlp\UnMapAndLoad", "Ptr",&LOADED_IMAGE ),   DllCall( "FreeLibrary", "Ptr",hModule )

Return RTrim( List, "`n" )
}
- Here is a list of dll functions where an explicit W or A is required, created by the script above on a Windows 7 PC:

Code: Select all

[advapi32.dll]
"advapi32\NotifyServiceStatusChange" (A_IsUnicode?"W":"A")
"advapi32\ProcessIdleTasks" (A_IsUnicode?"W":"")

[advpack.dll]
"advpack\AddDelBackupEntry" (A_IsUnicode?"W":"A")
"advpack\AdvInstallFile" (A_IsUnicode?"W":"A")
"advpack\DelNode" (A_IsUnicode?"W":"A")
"advpack\DelNodeRunDLL32" (A_IsUnicode?"W":"A")
"advpack\DoInfInstall" (A_IsUnicode?"W":"A")
"advpack\ExecuteCab" (A_IsUnicode?"W":"A")
"advpack\ExtractFiles" (A_IsUnicode?"W":"A")
"advpack\FileSaveMarkNotExist" (A_IsUnicode?"W":"A")
"advpack\FileSaveRestore" (A_IsUnicode?"W":"A")
"advpack\FileSaveRestoreOnINF" (A_IsUnicode?"W":"A")
"advpack\GetVersionFromFile" (A_IsUnicode?"W":"A")
"advpack\GetVersionFromFileEx" (A_IsUnicode?"W":"A")
"advpack\LaunchINFSection" (A_IsUnicode?"W":"A")
"advpack\LaunchINFSectionEx" (A_IsUnicode?"W":"A")
"advpack\OpenINFEngine" (A_IsUnicode?"W":"A")
"advpack\RebootCheckOnInstall" (A_IsUnicode?"W":"A")
"advpack\RegInstall" (A_IsUnicode?"W":"A")
"advpack\RegisterOCX" (A_IsUnicode?"W":"")
"advpack\RegRestoreAll" (A_IsUnicode?"W":"A")
"advpack\RegSaveRestore" (A_IsUnicode?"W":"A")
"advpack\RegSaveRestoreOnINF" (A_IsUnicode?"W":"A")
"advpack\RunSetupCommand" (A_IsUnicode?"W":"A")
"advpack\SetPerUserSecValues" (A_IsUnicode?"W":"A")
"advpack\TranslateInfString" (A_IsUnicode?"W":"A")
"advpack\TranslateInfStringEx" (A_IsUnicode?"W":"A")
"advpack\UserInstStubWrapper" (A_IsUnicode?"W":"A")
"advpack\UserUnInstStubWrapper" (A_IsUnicode?"W":"A")

[api-ms-win-core-misc-l1-1-0.dll]
"api-ms-win-core-misc-l1-1-0\lstrcmp" (A_IsUnicode?"W":"A")
"api-ms-win-core-misc-l1-1-0\lstrcmpi" (A_IsUnicode?"W":"A")
"api-ms-win-core-misc-l1-1-0\lstrcpyn" (A_IsUnicode?"W":"A")
"api-ms-win-core-misc-l1-1-0\lstrlen" (A_IsUnicode?"W":"A")

[api-ms-win-core-processenvironment-l1-1-0.dll]
"api-ms-win-core-processenvironment-l1-1-0\GetEnvironmentStrings" (A_IsUnicode?"W":"A")

[atmlib.dll]
"atmlib\ATMAddFont" (A_IsUnicode?"W":"A")
"atmlib\ATMAddFontEx" (A_IsUnicode?"W":"A")
"atmlib\ATMBBoxBaseXYShowText" (A_IsUnicode?"W":"A")
"atmlib\ATMEnumFonts" (A_IsUnicode?"W":"A")
"atmlib\ATMEnumMMFonts" (A_IsUnicode?"W":"A")
"atmlib\ATMFontAvailable" (A_IsUnicode?"W":"A")
"atmlib\ATMFontStatus" (A_IsUnicode?"W":"A")
"atmlib\ATMGetBuildStr" (A_IsUnicode?"W":"A")
"atmlib\ATMGetFontInfo" (A_IsUnicode?"W":"A")
"atmlib\ATMGetFontPaths" (A_IsUnicode?"W":"A")
"atmlib\ATMGetGlyphList" (A_IsUnicode?"W":"A")
"atmlib\ATMGetMenuName" (A_IsUnicode?"W":"A")
"atmlib\ATMGetNtmFields" (A_IsUnicode?"W":"A")
"atmlib\ATMGetOutline" (A_IsUnicode?"W":"A")
"atmlib\ATMGetPostScriptName" (A_IsUnicode?"W":"A")
"atmlib\ATMGetVersionEx" (A_IsUnicode?"W":"A")
"atmlib\ATMMakePFM" (A_IsUnicode?"W":"A")
"atmlib\ATMMakePSS" (A_IsUnicode?"W":"A")
"atmlib\ATMRemoveFont" (A_IsUnicode?"W":"A")
"atmlib\ATMXYShowText" (A_IsUnicode?"W":"A")

[avifil32.dll]
"avifil32\AVIBuildFilter" (A_IsUnicode?"W":"A")
"avifil32\AVIFileCreateStream" (A_IsUnicode?"W":"A")
"avifil32\AVIFileInfo" (A_IsUnicode?"W":"A")
"avifil32\AVIFileOpen" (A_IsUnicode?"W":"A")
"avifil32\AVISave" (A_IsUnicode?"W":"A")
"avifil32\AVISaveV" (A_IsUnicode?"W":"A")
"avifil32\AVIStreamInfo" (A_IsUnicode?"W":"A")
"avifil32\AVIStreamOpenFromFile" (A_IsUnicode?"W":"A")
"avifil32\EditStreamSetInfo" (A_IsUnicode?"W":"A")
"avifil32\EditStreamSetName" (A_IsUnicode?"W":"A")

[basecsp.dll]
"basecsp\CPAcquireContext" (A_IsUnicode?"W":"")

[comctl32.dll]
"comctl32\CreatePropertySheetPage" (A_IsUnicode?"W":"A")
"comctl32\CreateStatusWindow" (A_IsUnicode?"W":"A")
"comctl32\DrawStatusText" (A_IsUnicode?"W":"A")
"comctl32\ImageList_LoadImage" (A_IsUnicode?"W":"A")
"comctl32\PropertySheet" (A_IsUnicode?"W":"A")

[cryptext.dll]
"cryptext\CryptExtAddCER" (A_IsUnicode?"W":"")
"cryptext\CryptExtAddCRL" (A_IsUnicode?"W":"")
"cryptext\CryptExtAddCTL" (A_IsUnicode?"W":"")
"cryptext\CryptExtAddP7R" (A_IsUnicode?"W":"")
"cryptext\CryptExtAddPFX" (A_IsUnicode?"W":"")
"cryptext\CryptExtAddSPC" (A_IsUnicode?"W":"")
"cryptext\CryptExtOpenCAT" (A_IsUnicode?"W":"")
"cryptext\CryptExtOpenCER" (A_IsUnicode?"W":"")
"cryptext\CryptExtOpenCRL" (A_IsUnicode?"W":"")
"cryptext\CryptExtOpenCTL" (A_IsUnicode?"W":"")
"cryptext\CryptExtOpenP7R" (A_IsUnicode?"W":"")
"cryptext\CryptExtOpenPKCS7" (A_IsUnicode?"W":"")
"cryptext\CryptExtOpenSTR" (A_IsUnicode?"W":"")

[cscui.dll]
"cscui\CSCOptions_RunDLL" (A_IsUnicode?"W":"A")

[dbghelp.dll]
"dbghelp\DbgHelpCreateUserDump" (A_IsUnicode?"W":"")
"dbghelp\EnumDirTree" (A_IsUnicode?"W":"")
"dbghelp\EnumerateLoadedModulesEx" (A_IsUnicode?"W":"")
"dbghelp\FindDebugInfoFileEx" (A_IsUnicode?"W":"")
"dbghelp\FindExecutableImageEx" (A_IsUnicode?"W":"")
"dbghelp\SearchTreeForFile" (A_IsUnicode?"W":"")
"dbghelp\SymAddSourceStream" (A_IsUnicode?"W":"A")
"dbghelp\SymAddSymbol" (A_IsUnicode?"W":"")
"dbghelp\SymDeleteSymbol" (A_IsUnicode?"W":"")
"dbghelp\SymEnumerateSymbols" (A_IsUnicode?"W":"")
"dbghelp\SymEnumLines" (A_IsUnicode?"W":"")
"dbghelp\SymEnumSourceFiles" (A_IsUnicode?"W":"")
"dbghelp\SymEnumSourceLines" (A_IsUnicode?"W":"")
"dbghelp\SymEnumSymbols" (A_IsUnicode?"W":"")
"dbghelp\SymEnumSymbolsForAddr" (A_IsUnicode?"W":"")
"dbghelp\SymEnumTypes" (A_IsUnicode?"W":"")
"dbghelp\SymEnumTypesByName" (A_IsUnicode?"W":"")
"dbghelp\SymFindDebugInfoFile" (A_IsUnicode?"W":"")
"dbghelp\SymFindExecutableImage" (A_IsUnicode?"W":"")
"dbghelp\SymFindFileInPath" (A_IsUnicode?"W":"")
"dbghelp\SymFromAddr" (A_IsUnicode?"W":"")
"dbghelp\SymFromIndex" (A_IsUnicode?"W":"")
"dbghelp\SymFromName" (A_IsUnicode?"W":"")
"dbghelp\SymFromToken" (A_IsUnicode?"W":"")
"dbghelp\SymGetHomeDirectory" (A_IsUnicode?"W":"")
"dbghelp\SymGetModuleInfo" (A_IsUnicode?"W":"")
"dbghelp\SymGetScope" (A_IsUnicode?"W":"")
"dbghelp\SymGetSearchPath" (A_IsUnicode?"W":"")
"dbghelp\SymGetSourceFile" (A_IsUnicode?"W":"")
"dbghelp\SymGetSourceFileFromToken" (A_IsUnicode?"W":"")
"dbghelp\SymGetSourceFileToken" (A_IsUnicode?"W":"")
"dbghelp\SymGetSourceVarFromToken" (A_IsUnicode?"W":"")
"dbghelp\SymGetSymbolFile" (A_IsUnicode?"W":"")
"dbghelp\SymGetTypeFromName" (A_IsUnicode?"W":"")
"dbghelp\SymInitialize" (A_IsUnicode?"W":"")
"dbghelp\SymLoadModuleEx" (A_IsUnicode?"W":"")
"dbghelp\SymMatchFileName" (A_IsUnicode?"W":"")
"dbghelp\SymMatchString" (A_IsUnicode?"W":"A")
"dbghelp\SymNext" (A_IsUnicode?"W":"")
"dbghelp\SymPrev" (A_IsUnicode?"W":"")
"dbghelp\SymSearch" (A_IsUnicode?"W":"")
"dbghelp\SymSetHomeDirectory" (A_IsUnicode?"W":"")
"dbghelp\SymSetSearchPath" (A_IsUnicode?"W":"")
"dbghelp\SymSrvDeltaName" (A_IsUnicode?"W":"")
"dbghelp\SymSrvGetFileIndexes" (A_IsUnicode?"W":"")
"dbghelp\SymSrvGetFileIndexInfo" (A_IsUnicode?"W":"")
"dbghelp\SymSrvGetFileIndexString" (A_IsUnicode?"W":"")
"dbghelp\SymSrvGetSupplement" (A_IsUnicode?"W":"")
"dbghelp\SymSrvIsStore" (A_IsUnicode?"W":"")
"dbghelp\SymSrvStoreFile" (A_IsUnicode?"W":"")
"dbghelp\SymSrvStoreSupplement" (A_IsUnicode?"W":"")
"dbghelp\UnDecorateSymbolName" (A_IsUnicode?"W":"")

[dbnetlib.dll]
"dbnetlib\ConnectionError" (A_IsUnicode?"W":"")
"dbnetlib\ConnectionOpen" (A_IsUnicode?"W":"")
"dbnetlib\ConnectionServerEnum" (A_IsUnicode?"W":"")

[dbnmpntw.dll]
"dbnmpntw\ConnectionError" (A_IsUnicode?"W":"")
"dbnmpntw\ConnectionOpen" (A_IsUnicode?"W":"")
"dbnmpntw\ConnectionServerEnum" (A_IsUnicode?"W":"")

[dfshim.dll]
"dfshim\ShArpMaintain" (A_IsUnicode?"W":"")
"dfshim\ShOpenVerbApplication" (A_IsUnicode?"W":"")
"dfshim\ShOpenVerbExtension" (A_IsUnicode?"W":"")
"dfshim\ShOpenVerbShortcut" (A_IsUnicode?"W":"")

[diskcopy.dll]
"diskcopy\DiskCopyRunDll" (A_IsUnicode?"W":"")

[dplayx.dll]
"dplayx\DirectPlayEnumerate" (A_IsUnicode?"W":"A")

[dsquery.dll]
"dsquery\OpenSavedDsQuery" (A_IsUnicode?"W":"")

[esent.dll]
"esent\JetAddColumn" (A_IsUnicode?"W":"A")
"esent\JetAttachDatabase" (A_IsUnicode?"W":"A")
"esent\JetAttachDatabase2" (A_IsUnicode?"W":"A")
"esent\JetAttachDatabaseWithStreaming" (A_IsUnicode?"W":"A")
"esent\JetBackup" (A_IsUnicode?"W":"A")
"esent\JetBackupInstance" (A_IsUnicode?"W":"A")
"esent\JetBeginDatabaseIncrementalReseed" (A_IsUnicode?"W":"A")
"esent\JetBeginSession" (A_IsUnicode?"W":"A")
"esent\JetCompact" (A_IsUnicode?"W":"A")
"esent\JetConvertDDL" (A_IsUnicode?"W":"A")
"esent\JetCreateDatabase" (A_IsUnicode?"W":"A")
"esent\JetCreateDatabase2" (A_IsUnicode?"W":"A")
"esent\JetCreateDatabaseWithStreaming" (A_IsUnicode?"W":"A")
"esent\JetCreateIndex" (A_IsUnicode?"W":"A")
"esent\JetCreateIndex2" (A_IsUnicode?"W":"A")
"esent\JetCreateInstance" (A_IsUnicode?"W":"A")
"esent\JetCreateInstance2" (A_IsUnicode?"W":"A")
"esent\JetCreateTable" (A_IsUnicode?"W":"A")
"esent\JetCreateTableColumnIndex" (A_IsUnicode?"W":"A")
"esent\JetCreateTableColumnIndex2" (A_IsUnicode?"W":"A")
"esent\JetDBUtilities" (A_IsUnicode?"W":"A")
"esent\JetDefragment" (A_IsUnicode?"W":"A")
"esent\JetDefragment2" (A_IsUnicode?"W":"A")
"esent\JetDefragment3" (A_IsUnicode?"W":"A")
"esent\JetDeleteColumn" (A_IsUnicode?"W":"A")
"esent\JetDeleteColumn2" (A_IsUnicode?"W":"A")
"esent\JetDeleteIndex" (A_IsUnicode?"W":"A")
"esent\JetDeleteTable" (A_IsUnicode?"W":"A")
"esent\JetDetachDatabase" (A_IsUnicode?"W":"A")
"esent\JetDetachDatabase2" (A_IsUnicode?"W":"A")
"esent\JetEnableMultiInstance" (A_IsUnicode?"W":"A")
"esent\JetEndDatabaseIncrementalReseed" (A_IsUnicode?"W":"A")
"esent\JetExternalRestore" (A_IsUnicode?"W":"A")
"esent\JetExternalRestore2" (A_IsUnicode?"W":"A")
"esent\JetGetAttachInfo" (A_IsUnicode?"W":"A")
"esent\JetGetAttachInfoInstance" (A_IsUnicode?"W":"A")
"esent\JetGetColumnInfo" (A_IsUnicode?"W":"A")
"esent\JetGetCurrentIndex" (A_IsUnicode?"W":"A")
"esent\JetGetDatabaseFileInfo" (A_IsUnicode?"W":"A")
"esent\JetGetDatabaseInfo" (A_IsUnicode?"W":"A")
"esent\JetGetIndexInfo" (A_IsUnicode?"W":"A")
"esent\JetGetInstanceInfo" (A_IsUnicode?"W":"A")
"esent\JetGetLogFileInfo" (A_IsUnicode?"W":"A")
"esent\JetGetLogInfo" (A_IsUnicode?"W":"A")
"esent\JetGetLogInfoInstance" (A_IsUnicode?"W":"A")
"esent\JetGetLogInfoInstance2" (A_IsUnicode?"W":"A")
"esent\JetGetObjectInfo" (A_IsUnicode?"W":"A")
"esent\JetGetSystemParameter" (A_IsUnicode?"W":"A")
"esent\JetGetTableColumnInfo" (A_IsUnicode?"W":"A")
"esent\JetGetTableIndexInfo" (A_IsUnicode?"W":"A")
"esent\JetGetTableInfo" (A_IsUnicode?"W":"A")
"esent\JetGetTruncateLogInfoInstance" (A_IsUnicode?"W":"A")
"esent\JetInit3" (A_IsUnicode?"W":"A")
"esent\JetOpenDatabase" (A_IsUnicode?"W":"A")
"esent\JetOpenFile" (A_IsUnicode?"W":"A")
"esent\JetOpenFileInstance" (A_IsUnicode?"W":"A")
"esent\JetOpenFileSectionInstance" (A_IsUnicode?"W":"A")
"esent\JetOpenTable" (A_IsUnicode?"W":"A")
"esent\JetOSSnapshotFreeze" (A_IsUnicode?"W":"A")
"esent\JetOSSnapshotGetFreezeInfo" (A_IsUnicode?"W":"A")
"esent\JetPatchDatabasePages" (A_IsUnicode?"W":"A")
"esent\JetRenameColumn" (A_IsUnicode?"W":"A")
"esent\JetRenameTable" (A_IsUnicode?"W":"A")
"esent\JetRestore" (A_IsUnicode?"W":"A")
"esent\JetRestore2" (A_IsUnicode?"W":"A")
"esent\JetRestoreInstance" (A_IsUnicode?"W":"A")
"esent\JetSetColumnDefaultValue" (A_IsUnicode?"W":"A")
"esent\JetSetCurrentIndex" (A_IsUnicode?"W":"A")
"esent\JetSetCurrentIndex2" (A_IsUnicode?"W":"A")
"esent\JetSetCurrentIndex3" (A_IsUnicode?"W":"A")
"esent\JetSetCurrentIndex4" (A_IsUnicode?"W":"A")
"esent\JetSetDatabaseSize" (A_IsUnicode?"W":"A")
"esent\JetSetSystemParameter" (A_IsUnicode?"W":"A")
"esent\JetSnapshotStart" (A_IsUnicode?"W":"A")
"esent\JetUpgradeDatabase" (A_IsUnicode?"W":"A")

[fveapi.dll]
"fveapi\FveEnableRawAccess" (A_IsUnicode?"W":"")
"fveapi\FveGetStatus" (A_IsUnicode?"W":"")
"fveapi\FveIsHybridVolume" (A_IsUnicode?"W":"")

[fveapibase.dll]
"fveapibase\FveGetStatus" (A_IsUnicode?"W":"")

[gdi32.dll]
"gdi32\GetGlyphOutline" (A_IsUnicode?"W":"A")
"gdi32\GetKerningPairs" (A_IsUnicode?"W":"A")

[hccutils.dll]
"hccutils\LoadSTRING" (A_IsUnicode?"W":"")

[htui.dll]
"htui\HTUI_ColorAdjustment" (A_IsUnicode?"W":"A")
"htui\HTUI_DeviceColorAdjustment" (A_IsUnicode?"W":"A")

[icm32.dll]
"icm32\CMCreateProfile" (A_IsUnicode?"W":"")
"icm32\CMCreateTransform" (A_IsUnicode?"W":"")
"icm32\CMCreateTransformExt" (A_IsUnicode?"W":"")

[IEAdvpack.dll]
"IEAdvpack\AddDelBackupEntry" (A_IsUnicode?"W":"A")
"IEAdvpack\AdvInstallFile" (A_IsUnicode?"W":"A")
"IEAdvpack\DelNode" (A_IsUnicode?"W":"A")
"IEAdvpack\DelNodeRunDLL32" (A_IsUnicode?"W":"A")
"IEAdvpack\DoInfInstall" (A_IsUnicode?"W":"A")
"IEAdvpack\ExecuteCab" (A_IsUnicode?"W":"A")
"IEAdvpack\ExtractFiles" (A_IsUnicode?"W":"A")
"IEAdvpack\FileSaveMarkNotExist" (A_IsUnicode?"W":"A")
"IEAdvpack\FileSaveRestore" (A_IsUnicode?"W":"A")
"IEAdvpack\FileSaveRestoreOnINF" (A_IsUnicode?"W":"A")
"IEAdvpack\GetVersionFromFile" (A_IsUnicode?"W":"A")
"IEAdvpack\GetVersionFromFileEx" (A_IsUnicode?"W":"A")
"IEAdvpack\LaunchINFSection" (A_IsUnicode?"W":"A")
"IEAdvpack\LaunchINFSectionEx" (A_IsUnicode?"W":"A")
"IEAdvpack\OpenINFEngine" (A_IsUnicode?"W":"A")
"IEAdvpack\RebootCheckOnInstall" (A_IsUnicode?"W":"A")
"IEAdvpack\RegInstall" (A_IsUnicode?"W":"A")
"IEAdvpack\RegisterOCX" (A_IsUnicode?"W":"")
"IEAdvpack\RegRestoreAll" (A_IsUnicode?"W":"A")
"IEAdvpack\RegSaveRestore" (A_IsUnicode?"W":"A")
"IEAdvpack\RegSaveRestoreOnINF" (A_IsUnicode?"W":"A")
"IEAdvpack\RunSetupCommand" (A_IsUnicode?"W":"A")
"IEAdvpack\SetPerUserSecValues" (A_IsUnicode?"W":"A")
"IEAdvpack\TranslateInfString" (A_IsUnicode?"W":"A")
"IEAdvpack\TranslateInfStringEx" (A_IsUnicode?"W":"A")
"IEAdvpack\UserInstStubWrapper" (A_IsUnicode?"W":"A")
"IEAdvpack\UserUnInstStubWrapper" (A_IsUnicode?"W":"A")

[ieframe.dll]
"ieframe\DoAddToFavDlg" (A_IsUnicode?"W":"")
"ieframe\DoOrganizeFavDlg" (A_IsUnicode?"W":"")

[imagehlp.dll]
"imagehlp\EnumerateLoadedModulesEx" (A_IsUnicode?"W":"")
"imagehlp\SymEnumerateSymbols" (A_IsUnicode?"W":"")
"imagehlp\SymEnumTypes" (A_IsUnicode?"W":"")
"imagehlp\SymEnumTypesByName" (A_IsUnicode?"W":"")
"imagehlp\SymFindFileInPath" (A_IsUnicode?"W":"")
"imagehlp\SymGetModuleInfo" (A_IsUnicode?"W":"")
"imagehlp\SymGetSymbolFile" (A_IsUnicode?"W":"")
"imagehlp\SymGetTypeFromName" (A_IsUnicode?"W":"")
"imagehlp\SymMatchFileName" (A_IsUnicode?"W":"")
"imagehlp\SymMatchString" (A_IsUnicode?"W":"A")
"imagehlp\SymSrvGetFileIndexes" (A_IsUnicode?"W":"")
"imagehlp\SymSrvGetFileIndexString" (A_IsUnicode?"W":"")

[inetcomm.dll]
"inetcomm\HrAthGetFileName" (A_IsUnicode?"W":"")
"inetcomm\HrGetLastOpenFileDirectory" (A_IsUnicode?"W":"")
"inetcomm\MimeOleGetFileInfo" (A_IsUnicode?"W":"")
"inetcomm\MimeOleParseRfc822Address" (A_IsUnicode?"W":"")
"inetcomm\MimeOleUnEscapeStringInPlace" (A_IsUnicode?"W":"")

[kernel32.dll]
"kernel32\GetBinaryType" (A_IsUnicode?"W":"A")
"kernel32\GetEnvironmentStrings" (A_IsUnicode?"W":"A")
"kernel32\lstrcat" (A_IsUnicode?"W":"A")
"kernel32\lstrcmp" (A_IsUnicode?"W":"A")
"kernel32\lstrcmpi" (A_IsUnicode?"W":"A")
"kernel32\lstrcpy" (A_IsUnicode?"W":"A")
"kernel32\lstrcpyn" (A_IsUnicode?"W":"A")
"kernel32\lstrlen" (A_IsUnicode?"W":"A")
"kernel32\Module32First" (A_IsUnicode?"W":"")
"kernel32\Module32Next" (A_IsUnicode?"W":"")
"kernel32\Process32First" (A_IsUnicode?"W":"")
"kernel32\Process32Next" (A_IsUnicode?"W":"")
"kernel32\ReplaceFile" (A_IsUnicode?"W":"A")

[KernelBase.dll]
"KernelBase\GetEnvironmentStrings" (A_IsUnicode?"W":"A")
"KernelBase\lstrcmp" (A_IsUnicode?"W":"A")
"KernelBase\lstrcmpi" (A_IsUnicode?"W":"A")
"KernelBase\lstrcpyn" (A_IsUnicode?"W":"A")
"KernelBase\lstrlen" (A_IsUnicode?"W":"A")

[linkinfo.dll]
"linkinfo\CreateLinkInfo" (A_IsUnicode?"W":"A")
"linkinfo\GetCanonicalPathInfo" (A_IsUnicode?"W":"A")
"linkinfo\ResolveLinkInfo" (A_IsUnicode?"W":"A")

[MaxxAudioAPOShell.dll]
"MaxxAudioAPOShell\WavesFX_Preset_GetName" (A_IsUnicode?"W":"")

[MaxxAudioAPOShell64.dll]
"MaxxAudioAPOShell64\WavesFX_Preset_GetName" (A_IsUnicode?"W":"")

[mscoree.dll]
"mscoree\GetHashFromAssemblyFile" (A_IsUnicode?"W":"")
"mscoree\GetHashFromFile" (A_IsUnicode?"W":"")

[msoert2.dll]
"msoert2\BrowseForFolder" (A_IsUnicode?"W":"")
"msoert2\CreateStreamOnHFile" (A_IsUnicode?"W":"")
"msoert2\CreateTempFile" (A_IsUnicode?"W":"")
"msoert2\FBuildTempPath" (A_IsUnicode?"W":"")
"msoert2\FIsHTMLFile" (A_IsUnicode?"W":"")
"msoert2\GenerateUniqueFileName" (A_IsUnicode?"W":"")
"msoert2\GetStoreRootDirectoryFromRegistryEntry" (A_IsUnicode?"W":"")
"msoert2\MessageBoxInst" (A_IsUnicode?"W":"")
"msoert2\OpenFileStream" (A_IsUnicode?"W":"")
"msoert2\OpenFileStreamShare" (A_IsUnicode?"W":"")
"msoert2\ReplaceChars" (A_IsUnicode?"W":"")
"msoert2\strtrim" (A_IsUnicode?"W":"")
"msoert2\UlStripWhitespace" (A_IsUnicode?"W":"")
"msoert2\WriteStreamToFile" (A_IsUnicode?"W":"")

[msrating.dll]
"msrating\RatingAccessDeniedDialog" (A_IsUnicode?"W":"")
"msrating\RatingAccessDeniedDialog2" (A_IsUnicode?"W":"")
"msrating\RatingCheckUserAccess" (A_IsUnicode?"W":"")
"msrating\RatingEnable" (A_IsUnicode?"W":"")
"msrating\RatingObtainQuery" (A_IsUnicode?"W":"")
"msrating\RatingSetupUI" (A_IsUnicode?"W":"")

[mssign32.dll]
"mssign32\PvkPrivateKeyAcquireContext" (A_IsUnicode?"":"A")
"mssign32\PvkPrivateKeyAcquireContextFromMemory" (A_IsUnicode?"":"A")
"mssign32\PvkPrivateKeyLoad" (A_IsUnicode?"":"A")
"mssign32\PvkPrivateKeyLoadFromMemory" (A_IsUnicode?"":"A")
"mssign32\PvkPrivateKeyReleaseContext" (A_IsUnicode?"":"A")
"mssign32\PvkPrivateKeySave" (A_IsUnicode?"":"A")
"mssign32\PvkPrivateKeySaveToMemory" (A_IsUnicode?"":"A")

[msvcr100.dll]
"msvcr100\_CRT_RTC_INIT" (A_IsUnicode?"W":"")
"msvcr100\_inp" (A_IsUnicode?"W":"")
"msvcr100\_outp" (A_IsUnicode?"W":"")

[msvcr110.dll]
"msvcr110\_CRT_RTC_INIT" (A_IsUnicode?"W":"")
"msvcr110\_inp" (A_IsUnicode?"W":"")
"msvcr110\_outp" (A_IsUnicode?"W":"")

[msvcr120.dll]
"msvcr120\_CRT_RTC_INIT" (A_IsUnicode?"W":"")
"msvcr120\_inp" (A_IsUnicode?"W":"")
"msvcr120\_outp" (A_IsUnicode?"W":"")

[msvcr120_clr0400.dll]
"msvcr120_clr0400\_CRT_RTC_INIT" (A_IsUnicode?"W":"")
"msvcr120_clr0400\_inp" (A_IsUnicode?"W":"")
"msvcr120_clr0400\_outp" (A_IsUnicode?"W":"")

[msvcr120d.dll]
"msvcr120d\_CRT_RTC_INIT" (A_IsUnicode?"W":"")
"msvcr120d\_CrtDbgReport" (A_IsUnicode?"W":"")
"msvcr120d\_inp" (A_IsUnicode?"W":"")
"msvcr120d\_outp" (A_IsUnicode?"W":"")

[msvcrt.dll]
"msvcrt\_CrtDbgReport" (A_IsUnicode?"W":"")
"msvcrt\_inp" (A_IsUnicode?"W":"")
"msvcrt\_outp" (A_IsUnicode?"W":"")

[msvfw32.dll]
"msvfw32\GetOpenFileNamePreview" (A_IsUnicode?"W":"A")
"msvfw32\MCIWndCreate" (A_IsUnicode?"W":"A")

[ntshrui.dll]
"ntshrui\GetLocalPathFromNetResource" (A_IsUnicode?"W":"A")
"ntshrui\GetNetResourceFromLocalPath" (A_IsUnicode?"W":"A")
"ntshrui\IsPathShared" (A_IsUnicode?"W":"A")

[odbc32.dll]
"odbc32\SQLBrowseConnect" (A_IsUnicode?"W":"A")
"odbc32\SQLColAttribute" (A_IsUnicode?"W":"A")
"odbc32\SQLColAttributes" (A_IsUnicode?"W":"A")
"odbc32\SQLColumnPrivileges" (A_IsUnicode?"W":"A")
"odbc32\SQLColumns" (A_IsUnicode?"W":"A")
"odbc32\SQLConnect" (A_IsUnicode?"W":"A")
"odbc32\SQLDataSources" (A_IsUnicode?"W":"A")
"odbc32\SQLDescribeCol" (A_IsUnicode?"W":"A")
"odbc32\SQLDriverConnect" (A_IsUnicode?"W":"A")
"odbc32\SQLDrivers" (A_IsUnicode?"W":"A")
"odbc32\SQLError" (A_IsUnicode?"W":"A")
"odbc32\SQLExecDirect" (A_IsUnicode?"W":"A")
"odbc32\SQLForeignKeys" (A_IsUnicode?"W":"A")
"odbc32\SQLGetConnectAttr" (A_IsUnicode?"W":"A")
"odbc32\SQLGetConnectOption" (A_IsUnicode?"W":"A")
"odbc32\SQLGetCursorName" (A_IsUnicode?"W":"A")
"odbc32\SQLGetDescField" (A_IsUnicode?"W":"A")
"odbc32\SQLGetDescRec" (A_IsUnicode?"W":"A")
"odbc32\SQLGetDiagField" (A_IsUnicode?"W":"A")
"odbc32\SQLGetDiagRec" (A_IsUnicode?"W":"A")
"odbc32\SQLGetInfo" (A_IsUnicode?"W":"A")
"odbc32\SQLGetStmtAttr" (A_IsUnicode?"W":"A")
"odbc32\SQLGetTypeInfo" (A_IsUnicode?"W":"A")
"odbc32\SQLNativeSql" (A_IsUnicode?"W":"A")
"odbc32\SQLPrepare" (A_IsUnicode?"W":"A")
"odbc32\SQLPrimaryKeys" (A_IsUnicode?"W":"A")
"odbc32\SQLProcedureColumns" (A_IsUnicode?"W":"A")
"odbc32\SQLProcedures" (A_IsUnicode?"W":"A")
"odbc32\SQLSetConnectAttr" (A_IsUnicode?"W":"A")
"odbc32\SQLSetConnectOption" (A_IsUnicode?"W":"A")
"odbc32\SQLSetCursorName" (A_IsUnicode?"W":"A")
"odbc32\SQLSetDescField" (A_IsUnicode?"W":"A")
"odbc32\SQLSetStmtAttr" (A_IsUnicode?"W":"A")
"odbc32\SQLSpecialColumns" (A_IsUnicode?"W":"A")
"odbc32\SQLStatistics" (A_IsUnicode?"W":"A")
"odbc32\SQLTablePrivileges" (A_IsUnicode?"W":"A")
"odbc32\SQLTables" (A_IsUnicode?"W":"A")

[odbccp32.dll]
"odbccp32\SQLConfigDataSource" (A_IsUnicode?"W":"")
"odbccp32\SQLConfigDriver" (A_IsUnicode?"W":"")
"odbccp32\SQLCreateDataSource" (A_IsUnicode?"W":"")
"odbccp32\SQLCreateDataSourceEx" (A_IsUnicode?"W":"")
"odbccp32\SQLGetAvailableDrivers" (A_IsUnicode?"W":"")
"odbccp32\SQLGetInstalledDrivers" (A_IsUnicode?"W":"")
"odbccp32\SQLGetPrivateProfileString" (A_IsUnicode?"W":"")
"odbccp32\SQLGetTranslator" (A_IsUnicode?"W":"")
"odbccp32\SQLInstallDriver" (A_IsUnicode?"W":"")
"odbccp32\SQLInstallDriverEx" (A_IsUnicode?"W":"")
"odbccp32\SQLInstallDriverManager" (A_IsUnicode?"W":"")
"odbccp32\SQLInstallerError" (A_IsUnicode?"W":"")
"odbccp32\SQLInstallODBC" (A_IsUnicode?"W":"")
"odbccp32\SQLInstallTranslator" (A_IsUnicode?"W":"")
"odbccp32\SQLInstallTranslatorEx" (A_IsUnicode?"W":"")
"odbccp32\SQLPostInstallerError" (A_IsUnicode?"W":"")
"odbccp32\SQLReadFileDSN" (A_IsUnicode?"W":"")
"odbccp32\SQLRemoveDriver" (A_IsUnicode?"W":"")
"odbccp32\SQLRemoveDSNFromIni" (A_IsUnicode?"W":"")
"odbccp32\SQLRemoveTranslator" (A_IsUnicode?"W":"")
"odbccp32\SQLValidDSN" (A_IsUnicode?"W":"")
"odbccp32\SQLWriteDSNToIni" (A_IsUnicode?"W":"")
"odbccp32\SQLWriteFileDSN" (A_IsUnicode?"W":"")
"odbccp32\SQLWritePrivateProfileString" (A_IsUnicode?"W":"")

[odbcjt32.dll]
"odbcjt32\ConfigDSN" (A_IsUnicode?"W":"")

[odbctrac.dll]
"odbctrac\TraceSQLAllocHandleStd" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLBrowseConnect" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLColAttribute" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLColAttributes" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLColumnPrivileges" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLColumns" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLConnect" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLDataSources" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLDescribeCol" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLDriverConnect" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLDrivers" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLError" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLExecDirect" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLForeignKeys" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLGetConnectAttr" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLGetConnectOption" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLGetCursorName" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLGetDescField" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLGetDescRec" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLGetDiagField" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLGetDiagRec" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLGetInfo" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLGetStmtAttr" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLGetTypeInfo" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLNativeSql" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLPrepare" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLPrimaryKeys" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLProcedureColumns" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLProcedures" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLSetConnectAttr" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLSetConnectOption" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLSetCursorName" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLSetDescField" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLSetStmtAttr" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLSpecialColumns" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLStatistics" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLTablePrivileges" (A_IsUnicode?"W":"")
"odbctrac\TraceSQLTables" (A_IsUnicode?"W":"")

[oleaut32.dll]
"oleaut32\LHashValOfNameSys" (A_IsUnicode?"":"A")

[pdh.dll]
"pdh\PdhOpenQuery" (A_IsUnicode?"W":"A")

[Query.dll]
"Query\LocateCatalogs" (A_IsUnicode?"W":"A")

[rasman.dll]
"rasman\RasGetDeviceName" (A_IsUnicode?"W":"")

[rpcrt4.dll]
"rpcrt4\I_RpcBindingInqDynamicEndpoint" (A_IsUnicode?"W":"A")
"rpcrt4\I_RpcNsBindingSetEntryName" (A_IsUnicode?"W":"A")

[scrobj.dll]
"scrobj\DllRegisterServerEx" (A_IsUnicode?"W":"A")
"scrobj\GenerateTypeLib" (A_IsUnicode?"W":"")

[sechost.dll]
"sechost\NotifyServiceStatusChange" (A_IsUnicode?"W":"A")

[SensorsApi.dll]
"SensorsApi\SensorPermissionsHandler" (A_IsUnicode?"W":"A")

[setupapi.dll]
"setupapi\InstallHinfSection" (A_IsUnicode?"W":"A")
"setupapi\SetupCommitFileQueue" (A_IsUnicode?"W":"A")
"setupapi\SetupDefaultQueueCallback" (A_IsUnicode?"W":"A")
"setupapi\SetupScanFileQueue" (A_IsUnicode?"W":"A")

[sfc.dll]
"sfc\SRSetRestorePoint" (A_IsUnicode?"W":"A")

[shdocvw.dll]
"shdocvw\DoAddToFavDlg" (A_IsUnicode?"W":"")
"shdocvw\DoOrganizeFavDlg" (A_IsUnicode?"W":"")

[shell32.dll]
"shell32\Control_RunDLL" (A_IsUnicode?"W":"A")
"shell32\DragQueryFile" (A_IsUnicode?"W":"A")
"shell32\ExtractIconEx" (A_IsUnicode?"W":"A")
"shell32\ILCreateFromPath" (A_IsUnicode?"W":"A")
"shell32\IsLFNDrive" (A_IsUnicode?"W":"A")
"shell32\OpenAs_RunDLL" (A_IsUnicode?"W":"A")
"shell32\Options_RunDLL" (A_IsUnicode?"W":"A")
"shell32\PrintersGetCommand_RunDLL" (A_IsUnicode?"W":"A")
"shell32\SHBrowseForFolder" (A_IsUnicode?"W":"A")
"shell32\Shell_GetCachedImageIndex" (A_IsUnicode?"W":"A")
"shell32\Shell_NotifyIcon" (A_IsUnicode?"W":"A")
"shell32\ShellExec_RunDLL" (A_IsUnicode?"W":"A")
"shell32\ShellExecuteEx" (A_IsUnicode?"W":"A")
"shell32\SHFileOperation" (A_IsUnicode?"W":"A")
"shell32\SHGetFileInfo" (A_IsUnicode?"W":"A")
"shell32\SHGetNewLinkInfo" (A_IsUnicode?"W":"A")
"shell32\SHGetPathFromIDList" (A_IsUnicode?"W":"A")
"shell32\SHHelpShortcuts_RunDLL" (A_IsUnicode?"W":"A")

[shimgvw.dll]
"shimgvw\ImageView_Fullscreen" (A_IsUnicode?"W":"A")
"shimgvw\ImageView_PrintTo" (A_IsUnicode?"W":"A")

[shsetup.dll]
"shsetup\SHUnattendedSetup" (A_IsUnicode?"W":"A")

[sti.dll]
"sti\StiCreateInstance" (A_IsUnicode?"W":"")

[streamci.dll]
"streamci\StreamingDeviceRemove" (A_IsUnicode?"W":"A")
"streamci\StreamingDeviceSetup" (A_IsUnicode?"W":"A")

[sxs.dll]
"sxs\SxsRunDllInstallAssembly" (A_IsUnicode?"W":"")

[tapi32.dll]
"tapi32\lineAddProvider" (A_IsUnicode?"W":"A")
"tapi32\lineBlindTransfer" (A_IsUnicode?"W":"A")
"tapi32\lineConfigDialog" (A_IsUnicode?"W":"A")
"tapi32\lineConfigDialogEdit" (A_IsUnicode?"W":"A")
"tapi32\lineDial" (A_IsUnicode?"W":"A")
"tapi32\lineForward" (A_IsUnicode?"W":"A")
"tapi32\lineGatherDigits" (A_IsUnicode?"W":"A")
"tapi32\lineGenerateDigits" (A_IsUnicode?"W":"A")
"tapi32\lineGetAddressCaps" (A_IsUnicode?"W":"A")
"tapi32\lineGetAddressID" (A_IsUnicode?"W":"A")
"tapi32\lineGetAddressStatus" (A_IsUnicode?"W":"A")
"tapi32\lineGetAppPriority" (A_IsUnicode?"W":"A")
"tapi32\lineGetCallInfo" (A_IsUnicode?"W":"A")
"tapi32\lineGetCountry" (A_IsUnicode?"W":"A")
"tapi32\lineGetDevCaps" (A_IsUnicode?"W":"A")
"tapi32\lineGetDevConfig" (A_IsUnicode?"W":"A")
"tapi32\lineGetIcon" (A_IsUnicode?"W":"A")
"tapi32\lineGetID" (A_IsUnicode?"W":"A")
"tapi32\lineGetLineDevStatus" (A_IsUnicode?"W":"A")
"tapi32\lineGetProviderList" (A_IsUnicode?"W":"A")
"tapi32\lineGetRequest" (A_IsUnicode?"W":"A")
"tapi32\lineGetTranslateCaps" (A_IsUnicode?"W":"A")
"tapi32\lineHandoff" (A_IsUnicode?"W":"A")
"tapi32\lineMakeCall" (A_IsUnicode?"W":"A")
"tapi32\lineOpen" (A_IsUnicode?"W":"A")
"tapi32\linePark" (A_IsUnicode?"W":"A")
"tapi32\linePickup" (A_IsUnicode?"W":"A")
"tapi32\linePrepareAddToConference" (A_IsUnicode?"W":"A")
"tapi32\lineRedirect" (A_IsUnicode?"W":"A")
"tapi32\lineSetAppPriority" (A_IsUnicode?"W":"A")
"tapi32\lineSetDevConfig" (A_IsUnicode?"W":"A")
"tapi32\lineSetTollList" (A_IsUnicode?"W":"A")
"tapi32\lineSetupConference" (A_IsUnicode?"W":"A")
"tapi32\lineSetupTransfer" (A_IsUnicode?"W":"A")
"tapi32\lineTranslateAddress" (A_IsUnicode?"W":"A")
"tapi32\lineTranslateDialog" (A_IsUnicode?"W":"A")
"tapi32\lineUnpark" (A_IsUnicode?"W":"A")
"tapi32\phoneConfigDialog" (A_IsUnicode?"W":"A")
"tapi32\phoneGetButtonInfo" (A_IsUnicode?"W":"A")
"tapi32\phoneGetDevCaps" (A_IsUnicode?"W":"A")
"tapi32\phoneGetIcon" (A_IsUnicode?"W":"A")
"tapi32\phoneGetID" (A_IsUnicode?"W":"A")
"tapi32\phoneGetStatus" (A_IsUnicode?"W":"A")
"tapi32\phoneSetButtonInfo" (A_IsUnicode?"W":"A")
"tapi32\tapiGetLocationInfo" (A_IsUnicode?"W":"A")
"tapi32\tapiRequestMakeCall" (A_IsUnicode?"W":"A")
"tapi32\tapiRequestMediaCall" (A_IsUnicode?"W":"A")

[ucrtbased.dll]
"ucrtbased\_CrtDbgReport" (A_IsUnicode?"W":"")

[unrar.dll]
"unrar\RARProcessFile" (A_IsUnicode?"W":"")

[unrar64.dll]
"unrar64\RARProcessFile" (A_IsUnicode?"W":"")

[url.dll]
"url\FileProtocolHandler" (A_IsUnicode?"":"A")
"url\MailToProtocolHandler" (A_IsUnicode?"":"A")
"url\OpenURL" (A_IsUnicode?"":"A")
"url\TelnetProtocolHandler" (A_IsUnicode?"":"A")

[user32.dll]
"user32\BroadcastSystemMessage" (A_IsUnicode?"W":"A")
"user32\CallMsgFilter" (A_IsUnicode?"W":"A")
"user32\GetAltTabInfo" (A_IsUnicode?"W":"A")
"user32\GetWindowModuleFileName" (A_IsUnicode?"W":"A")
"user32\IsDialogMessage" (A_IsUnicode?"W":"A")
"user32\RealGetWindowClass" (A_IsUnicode?"W":"A")
"user32\TranslateAccelerator" (A_IsUnicode?"W":"A")

[wdscore.dll]
"wdscore\GetMajorTask" (A_IsUnicode?"":"A")
"wdscore\GetMinorTask" (A_IsUnicode?"":"A")

[wiashext.dll]
"wiashext\AddDeviceWasChosen" (A_IsUnicode?"W":"A")

[wininet.dll]
"wininet\DeleteUrlCacheEntry" (A_IsUnicode?"W":"A")
"wininet\InternetConfirmZoneCrossing" (A_IsUnicode?"W":"A")
"wininet\InternetDial" (A_IsUnicode?"W":"A")
"wininet\InternetGetCertByURL" (A_IsUnicode?"":"A")
"wininet\InternetGetConnectedStateEx" (A_IsUnicode?"W":"A")
"wininet\InternetGetSecurityInfoByURL" (A_IsUnicode?"W":"A")
"wininet\InternetGoOnline" (A_IsUnicode?"W":"A")
"wininet\InternetSetDialState" (A_IsUnicode?"W":"A")
"wininet\InternetSetStatusCallback" (A_IsUnicode?"W":"A")
"wininet\InternetShowSecurityInfoByURL" (A_IsUnicode?"W":"A")
"wininet\InternetTimeFromSystemTime" (A_IsUnicode?"W":"A")
"wininet\InternetTimeToSystemTime" (A_IsUnicode?"W":"A")
"wininet\SetUrlCacheEntryGroup" (A_IsUnicode?"W":"A")
"wininet\UnlockUrlCacheEntryFile" (A_IsUnicode?"W":"A")

[winmm.dll]
"winmm\PlaySound" (A_IsUnicode?"W":"A")

[Wldap32.dll]
"Wldap32\cldap_open" (A_IsUnicode?"W":"A")
"Wldap32\ldap_add" (A_IsUnicode?"W":"A")
"Wldap32\ldap_add_ext" (A_IsUnicode?"W":"A")
"Wldap32\ldap_add_ext_s" (A_IsUnicode?"W":"A")
"Wldap32\ldap_add_s" (A_IsUnicode?"W":"A")
"Wldap32\ldap_bind" (A_IsUnicode?"W":"A")
"Wldap32\ldap_bind_s" (A_IsUnicode?"W":"A")
"Wldap32\ldap_compare" (A_IsUnicode?"W":"A")
"Wldap32\ldap_compare_ext" (A_IsUnicode?"W":"A")
"Wldap32\ldap_compare_ext_s" (A_IsUnicode?"W":"A")
"Wldap32\ldap_compare_s" (A_IsUnicode?"W":"A")
"Wldap32\ldap_control_free" (A_IsUnicode?"W":"A")
"Wldap32\ldap_controls_free" (A_IsUnicode?"W":"A")
"Wldap32\ldap_count_values" (A_IsUnicode?"W":"A")
"Wldap32\ldap_create_page_control" (A_IsUnicode?"W":"A")
"Wldap32\ldap_create_sort_control" (A_IsUnicode?"W":"A")
"Wldap32\ldap_delete" (A_IsUnicode?"W":"A")
"Wldap32\ldap_delete_ext" (A_IsUnicode?"W":"A")
"Wldap32\ldap_delete_ext_s" (A_IsUnicode?"W":"A")
"Wldap32\ldap_delete_s" (A_IsUnicode?"W":"A")
"Wldap32\ldap_dn2ufn" (A_IsUnicode?"W":"A")
"Wldap32\ldap_err2string" (A_IsUnicode?"W":"A")
"Wldap32\ldap_escape_filter_element" (A_IsUnicode?"W":"A")
"Wldap32\ldap_explode_dn" (A_IsUnicode?"W":"A")
"Wldap32\ldap_extended_operation" (A_IsUnicode?"W":"A")
"Wldap32\ldap_first_attribute" (A_IsUnicode?"W":"A")
"Wldap32\ldap_free_controls" (A_IsUnicode?"W":"A")
"Wldap32\ldap_get_dn" (A_IsUnicode?"W":"A")
"Wldap32\ldap_get_option" (A_IsUnicode?"W":"A")
"Wldap32\ldap_get_values" (A_IsUnicode?"W":"A")
"Wldap32\ldap_get_values_len" (A_IsUnicode?"W":"A")
"Wldap32\ldap_init" (A_IsUnicode?"W":"A")
"Wldap32\ldap_memfree" (A_IsUnicode?"W":"A")
"Wldap32\ldap_modify" (A_IsUnicode?"W":"A")
"Wldap32\ldap_modify_ext" (A_IsUnicode?"W":"A")
"Wldap32\ldap_modify_ext_s" (A_IsUnicode?"W":"A")
"Wldap32\ldap_modify_s" (A_IsUnicode?"W":"A")
"Wldap32\ldap_modrdn" (A_IsUnicode?"W":"A")
"Wldap32\ldap_modrdn2" (A_IsUnicode?"W":"A")
"Wldap32\ldap_modrdn2_s" (A_IsUnicode?"W":"A")
"Wldap32\ldap_modrdn_s" (A_IsUnicode?"W":"A")
"Wldap32\ldap_next_attribute" (A_IsUnicode?"W":"A")
"Wldap32\ldap_open" (A_IsUnicode?"W":"A")
"Wldap32\ldap_parse_page_control" (A_IsUnicode?"W":"A")
"Wldap32\ldap_parse_reference" (A_IsUnicode?"W":"A")
"Wldap32\ldap_parse_result" (A_IsUnicode?"W":"A")
"Wldap32\ldap_parse_sort_control" (A_IsUnicode?"W":"A")
"Wldap32\ldap_rename_ext" (A_IsUnicode?"W":"A")
"Wldap32\ldap_rename_ext_s" (A_IsUnicode?"W":"A")
"Wldap32\ldap_search" (A_IsUnicode?"W":"A")
"Wldap32\ldap_search_ext" (A_IsUnicode?"W":"A")
"Wldap32\ldap_search_ext_s" (A_IsUnicode?"W":"A")
"Wldap32\ldap_search_init_page" (A_IsUnicode?"W":"A")
"Wldap32\ldap_search_s" (A_IsUnicode?"W":"A")
"Wldap32\ldap_search_st" (A_IsUnicode?"W":"A")
"Wldap32\ldap_set_option" (A_IsUnicode?"W":"A")
"Wldap32\ldap_simple_bind" (A_IsUnicode?"W":"A")
"Wldap32\ldap_simple_bind_s" (A_IsUnicode?"W":"A")
"Wldap32\ldap_sslinit" (A_IsUnicode?"W":"A")
"Wldap32\ldap_ufn2dn" (A_IsUnicode?"W":"A")
"Wldap32\ldap_value_free" (A_IsUnicode?"W":"A")

[ws2_32.dll]
"ws2_32\freeaddrinfo" (A_IsUnicode?"W":"")
"ws2_32\FreeAddrInfoEx" (A_IsUnicode?"W":"")
"ws2_32\getaddrinfo" (A_IsUnicode?"W":"")
"ws2_32\getnameinfo" (A_IsUnicode?"W":"")

[xolehlp.dll]
"xolehlp\DtcGetTransactionManagerEx" (A_IsUnicode?"W":"A")
- See also:
[list a dll's functions]
LoadPicture() from variable - AutoHotkey Community
https://autohotkey.com/boards/viewtopic.php?f=5&t=39002&p=181321#p181321
Hello, i have a problem in DLLCall("winmm.dll\PlaySound"...)

Code: Select all

File := "D:\Music\sxs.mp3"
DllCall("winmm.dll\PlaySound", "UInt", &File, "UInt", 0, "UInt", 0)
It doesnot work., but if i use SoundPlay, "D:\Music\sxs.mp3", it works.
My Computer is Win10 64bit, my AHK version 1.1.33.02 (last version), and i use Unicode 64bit.
Can you tell me where I was wrong. How do I fix it?
And sorry for my bad English :?

burque505
Posts: 1731
Joined: 22 Jan 2017, 19:37

Re: list of dll functions where an explicit W or A is required

Post by burque505 » 30 Jul 2020, 08:08

Hi, if you have the Unicode version of AHK, you'll need something like this.

Code: Select all

File := "C:\Sounds\Delete.wav"
DllCall("winmm.dll\PlaySoundW", "UInt", &File, "UInt", 0, "UInt", 0)
See the top of your post:
- For example, winmm.dll contains PlaySound, PlaySoundA and PlaySoundW. If you specify PlaySound, that will only work on ANSI versions of AHK, so you must explicitly specify W or A:
That said, winmm.dll won't play .mp3 files for me on either Win10 or Win7.

swagfag
Posts: 6222
Joined: 11 Jan 2017, 17:59

Re: list of dll functions where an explicit W or A is required

Post by swagfag » 30 Jul 2020, 10:35

Code: Select all

File := "D:\Music\sxs.????????"
SND_FILENAME := 0x00020000
DllCall("winmm.dll\PlaySoundW", "Str", File, "Ptr", 0, "UInt", SND_FILENAME)
PlaySound is for playing WAV resources, so the path should specify a .wav file
mciSendString(which is what AHK's SoundPlay uses) can play mp3's
so can the WMPlayer comobject
otherwise u need an audio library

SOTE
Posts: 1426
Joined: 15 Jun 2015, 06:21

Re: list of dll functions where an explicit W or A is required

Post by SOTE » 30 Jul 2020, 10:51

burque505 wrote:
30 Jul 2020, 08:08
Hi, if you have the Unicode version of AHK, you'll need something like this.

Code: Select all

File := "C:\Sounds\Delete.wav"
DllCall("winmm.dll\PlaySoundW", "UInt", &File, "UInt", 0, "UInt", 0)
See the top of your post:
- For example, winmm.dll contains PlaySound, PlaySoundA and PlaySoundW. If you specify PlaySound, that will only work on ANSI versions of AHK, so you must explicitly specify W or A:
That said, winmm.dll won't play .mp3 files for me on either Win10 or Win7.
Supposedly using DllCall with winmm.dll\mciSendString should be able to work.
Edit: Changed the below example, so that it should work properly.

Partial of old example from link that was created by tmplinshi
https://www.autohotkey.com/boards/viewtopic.php?t=288 (SoundPlay Questions)

Code: Select all

MusicFile := "F:\Music\test.mp3"
mciSendString("open " """" MusicFile """" " type mpegvideo Alias MyMusic")
mciSendString("play MyMusic")
MsgBox, Playing...

mciSendString(Command) 
{
   Return, DllCall("winmm.dll\mciSendString", Str,Command, Str,"", Int,0, Int,0)
}
Edit: Wow, swagfag posted something similar, while I was typing my post.
Last edited by SOTE on 30 Jul 2020, 11:29, edited 3 times in total.

swagfag
Posts: 6222
Joined: 11 Jan 2017, 17:59

Re: list of dll functions where an explicit W or A is required

Post by swagfag » 30 Jul 2020, 10:56

the example works. if it doesnt for u, check the return value of the dllcall, ErrorLevel and A_LastError

burque505
Posts: 1731
Joined: 22 Jan 2017, 19:37

Re: list of dll functions where an explicit W or A is required

Post by burque505 » 30 Jul 2020, 11:04

@SOTE, this works for me on Win7 64-bit, AHK 1.1.33.02 U64:

Code: Select all

MusicFile := "C:\Sounds\drumroll.mp3"
mciSendString("open " """" MusicFile """" " type mpegvideo Alias MyMusic")
mciSendString("play MyMusic")
MsgBox, Playing...

ResRead( WAV01, "C:\Sounds\Delete.wav" )
PlaySoundAsync( WAV01 )
MsgBox, pause

; ====================================================================
mciSendString(Command) {
   Return, DllCall("winmm.dll\mciSendStringW", Str,Command, Str,"", Int,0, Int,0)
}

PlaySoundAsync( ByRef Sound ) { ; http://www.autohotkey.com/board/topic/96484-read-wave-resource-from-exe-using-skans-dllread-possible/?p=609800
   Return DllCall( "winmm.dll\PlaySound" ( A_IsUnicode ? "W" : "A" ), UInt,&Sound, UInt,0, UInt, 0x7 )
}

; ResRead() By SKAN, from http://www.autohotkey.com/board/topic/57631-crazy-scripting-resource-only-dll-for-dummies-36l-v07/?p=609282
ResRead( ByRef Var, Key ) { 
  VarSetCapacity( Var, 128 ), VarSetCapacity( Var, 0 )
  If ! ( A_IsCompiled ) {
    FileGetSize, nSize, %Key%
    FileRead, Var, *c %Key%
    Return nSize
  }
 
  If hMod := DllCall( "GetModuleHandle", UInt,0 )
    If hRes := DllCall( "FindResource", UInt,hMod, Str,Key, UInt,10 )
      If hData := DllCall( "LoadResource", UInt,hMod, UInt,hRes )
        If pData := DllCall( "LockResource", UInt,hData )
  Return VarSetCapacity( Var, nSize := DllCall( "SizeofResource", UInt,hMod, UInt,hRes ) )
      ,  DllCall( "RtlMoveMemory", Str,Var, UInt,pData, UInt,nSize )
Return 0    
}

; PlaySoundAsync_File( SoundFile ) {
;    Return DllCall("winmm.dll\PlaySound", "str",SoundFile, UInt,0, UInt, 0x00020000 | 0x0001 )
; }
You can see I added a 'W' to @tmplinshi's code but it works without it also.

Code: Select all

mciSendString(Command) {
   Return, DllCall("winmm.dll\mciSendStringW", Str,Command, Str,"", Int,0, Int,0)
}

SOTE
Posts: 1426
Joined: 15 Jun 2015, 06:21

Re: list of dll functions where an explicit W or A is required

Post by SOTE » 30 Jul 2020, 11:17

You guys are good and quick typist. Yes, burque505, the original posted example was missing some code. Adding the MsgBox, Playing... or as swagfag suggested (thanks for the correction) A_LastError afterwards and the mp3 will play.

tmplinshi's example code does indeed work.

I also agree with modifying mciSendString to mciSendStringW, which is more in line with what jeeswg was cautioning about in his original post, though both appear to work in this case.

Post Reply

Return to “Tips and Tricks (v1)”