- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
有这样的代码:
#include <ras.h>
#include <raserror.h>
#include <stdio.h>
#include <windows.h>
int main(int argc, char** argv) {
DWORD dwEntryInfoSize = 0;
DWORD dwDeviceInfoSize = 0;
DWORD dwRet = 0;
LPRASENTRY lpRasEntry = NULL;
LPBYTE lpDeviceInfo = NULL;
创建 RAS 连接。获取默认电话簿条目的缓冲区大小信息。
if ((dwRet = RasGetEntryProperties(NULL, "", NULL, &dwEntryInfoSize, NULL, &dwDeviceInfoSize)) != ERROR_SUCCESS) {
if (dwRet != ERROR_BUFFER_TOO_SMALL) {
printf("RasGetEntryProperties error: %s\n", GetLastError());
return EXIT_FAILURE;
}
}
if (dwEntryInfoSize == 0) {
printf("Entry info size error: %s\n", GetLastError());
return EXIT_FAILURE;
}
lpRasEntry = (LPRASENTRY) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwEntryInfoSize);
if (lpRasEntry == NULL) {
printf("HeapAlloc RasEntry error: %s\n", GetLastError());
return EXIT_FAILURE;
}
if (dwDeviceInfoSize) {
lpDeviceInfo = (LPBYTE)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwDeviceInfoSize);
}
lpRasEntry->dwSize = sizeof(RASENTRY);
这里有一个错误:Overlapped I/O operation is in progress。该错误发生在 Windows XP 中,在 Windows 10 中一切正常。我需要此代码才能在 XP 中工作。
if ((dwRet = RasGetEntryProperties(NULL, "", lpRasEntry, &dwEntryInfoSize, lpDeviceInfo, &dwDeviceInfoSize)) != ERROR_SUCCESS) {
printf("RasGetEntryProperties error: %s\n", GetLastError());
return EXIT_FAILURE;
}
// Validate new phonebook name "TestEntry"
if ((dwRet = RasValidateEntryName(NULL, "TestEntry")) != ERROR_SUCCESS) {
printf("RasValidateEntryName error: %s\n", GetLastError());
return EXIT_FAILURE;
}
// Install a new phonebook entry, "TestEntry", using default properties
if ((dwRet = RasSetEntryProperties(NULL, "TestEntry", lpRasEntry, dwEntryInfoSize, lpDeviceInfo, dwDeviceInfoSize)) != ERROR_SUCCESS) {
printf("RasSetEntryProperties error: %s\n", GetLastError());
return EXIT_FAILURE;
}
// Deallocate memory for the connection buffer
HeapFree(GetProcessHeap(), 0, lpRasEntry);
lpRasEntry = NULL;
return EXIT_SUCCESS;
}
此代码创建一个拨号连接。我被这个错误困住了。
最佳答案
代码显示错误...
错误 #1:Ras* 函数没有为 GetLastError() 设置错误代码。那些 GetLastError() 没有意义。它们以 DWORD 形式返回错误代码。阅读 MSDN 中的路由和远程访问错误代码。
错误 #2:在 RasGetEntryProperties() 函数 5 和 6 中以 NT 开头,参数未使用且应为 NULL。
错误#3:最阴险的。事实上,某些 Windows 操作系统的 RASENTRY 结构的大小是不同的。例如,在 XP 和 10 之间。因此,在头文件的某处,我们应该指定如下内容:
#define WINVER 0x0501
#define _WIN32_WINNT 0x0501
可以在 MSDN 中阅读更多详细信息。修改 WINVER 和 _WIN32_WINNT。在本例中,我们指定了 Windows XP 的版本。这就是我所需要的。而Overlapped I/O operation is in progress与我们在这种情况下无关。我们只是输出 GetLastError() 的结果,这可能是在执行前面的函数时在 Windows 深处的某个地方出现的。
关于c - 为什么第二次调用 RasGetEntryProperties() 返回正在进行的重叠 I/O 操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47132256/
有这样的代码: #include #include #include #include int main(int argc, char** argv) { DWORD dwEntryI
我是一名优秀的程序员,十分优秀!