$l_Context是一个任意的32位值,可以设为0、1、2、1234、0xABCD 等任意合法的数值,不能指定为字符串、数组、obj 和 DllStruct结构。_FTP_SetStatusCallBack指定的回调函数必须如下定义:
_InternetStatusCallBack($hInternet, $l_Context, $iInternetStatus, $pStatusInformation, $iStatusInformationLength)
第2个参数$l_Context就是你调用_FTP_FileGet、_FTP_FilePut、_FTP_FindFileFirst时指定的值。这个参数具体有什么作用 需要你自己发挥想象,说没用 这个参数果真没一点用处,说有用那这个参数的用处可大了。
就像_WinAPI_GetWindowLong函数,它有一个功能是获取 关联到指定窗口的自定义数据,对应的功能号为GWL_USERDATA。你若明白了GWL_USERDATA的作用,那以上$l_Context的作用你也会明白了。一些_GUICtrl*_SetItemParam函数中需要的$iParam参数 有相同的意义。
任何需要回调的API,差不多都有这样一个看似无用的Context(有的API声明为lparam或pUserData、pData)参数,如User32.EnumWindows、PowrProf.EnumPwrSchemes、Kernel32.QueueUserAPC、Kernel32.WriteFileEx、Ntdll.NtDeviceIoControlFile。 |