我自己没有使用过这个,但让我们一步一步来举个例子:
HINTERNET hinternet = InternetConnect(...); //assume hinternet is valid
if (!FtpCreateDirectory(hinternet, "C:\\example")) {
std::cerr << "Error creating FTP directory. Code: " << GetLastError();
}
一步步:
- 首先,我们得到一个
HINTERNET
句柄。如何?好吧,文档对参数这么说:
先前使用 INTERNET_SERVICE_FTP 调用 InternetConnect 返回的句柄。
这就是我InternetConnect
在示例中调用的原因。
- 接下来,我们看第二个参数。查看
Windows Data Types
文章,您可以看到它需要 aCONST WCHAR *
或CONST CHAR *
,具体取决于是否UNICODE
定义。为简单起见,我表现得好像不是,尽管您可以使用TEXT
宏根据UNICODE
.
指向包含要创建的目录名称的以空字符结尾的字符串的指针。这可以是完全限定路径或相对于当前目录的名称。
正如我们所见,它只是一个路径,所以我传入了一个示例路径。这只是一个示例,但请记住备注部分对此参数的说明。
如果成功则返回 TRUE,否则返回 FALSE。要获取特定的错误消息,请调用 GetLastError。(更多未显示)
因此,我们将调用包装在 if 语句中以捕获错误,我们可以检索到 using 的代码GetLastError
。使用每个函数的文章中描述的错误处理技术很重要。他们中的很多人说发生错误时可以使用GetLastError
,但有些不支持GetLastError
使用,有些支持不同类型的错误检索功能,因此请确保单独遵循每个功能的指南。
除此之外,_In_
表示参数进入后就没用了。这与 , 其中相反_Out_
,这意味着您将传递分配的内存并且函数将写入它,因此您可以在函数调用之后使用函数写入的值。