首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >帮助ctypes.windll.dnsapi.DnsQuery_A

帮助ctypes.windll.dnsapi.DnsQuery_A
EN

Stack Overflow用户
提问于 2009-11-28 21:50:40
回答 1查看 606关注 0票数 2

我对DnsQuery](http://msdn.microsoft.com/en-us/library/ms682016(VS.85%29.aspx%29)接口有问题,*ppQueryResultsSet参数困扰着我。谁能给我举个例子,教我如何在python中进行正确的DLL调用?

代码语言:javascript
运行
复制
import ctypes
from ctypes import wintypes
from windns_types import DNS_RECORD, IP4_ARRAY #declared here http://pastebin.com/f39d8b997


def DnsQuery(host, type, server, opt=0):
    server_arr = IP4_ARRAY()
    rr = DNS_RECORD()
    server_arr.AddrCount=1
    server_arr.AddrArray[0] = ctypes.windll.Ws2_32.inet_addr(server)
    ctypes.windll.dnsapi.DnsQuery_A(host, type, opt, server_arr, rr, 0)
    # WindowsError: exception: access violation reading 0x00000001

    return rr

print DnsQuery("www.google.com", 1, "208.67.222.222")
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-11-29 02:19:00

它不是指向DNS_RECORD的指针吗?这意味着您必须将rr初始化为POINTER(DNS_RECORD)()并通过引用:ctypes.byref(rr)传递它。

更新:但我认为你看到的问题是传递server_arr:你传递了一个第一个字段为0x00000001的结构,而不是对这个结构的引用,所以C代码试图取消对AddrCount字段的引用,并给出访问冲突。同样的技术也应该用于server_arr

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1812564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档