C++ ServerSupportFunction向DWORD询问以null结尾的字符串,如何在64位上执行?

C++ ServerSupportFunction向DWORD询问以null结尾的字符串,如何在64位上执行?,c++,delphi,winapi,iis,isapi,C++,Delphi,Winapi,Iis,Isapi,我需要调用windows api: BOOL WINAPI * ServerSupportFunction( _In_ struct _HTTP_FILTER_CONTEXT *pfc, _In_ enum SF_REQ_TYPE sfReq, _In_ PVOID pData, _In_ DWORD ul1, DWORD ul2 ); 用德尔福翻译,如: function ( var pfc{: THTTP_FILTER_CONTEXT}; sfReq:

我需要调用windows api:

BOOL WINAPI * ServerSupportFunction(
  _In_  struct _HTTP_FILTER_CONTEXT *pfc,
  _In_  enum SF_REQ_TYPE sfReq,
  _In_  PVOID pData,
  _In_  DWORD ul1,
  DWORD ul2
);

用德尔福翻译,如:

function (
  var pfc{: THTTP_FILTER_CONTEXT};
  sfReq: DWORD; 
  pData: Pointer; 
  ul1, ul2: DWORD): BOOL; stdcall;
winApi文档指出,UL1(DWORD)必须指向可选的以null结尾的字符串,该字符串包含要添加的头。所以我天真地尝试如下(delphi代码):

但是,由于访问权限被破坏,这一点非常糟糕。但由于我使用64位,我不明白
Dword(@LUrl[1])
甚至如何作为@return 64位地址工作

那我该怎么办呢?它们是一种强制指针停留在32位空间的方法,以便我可以将其转换为DWORD吗?或者我只是错过了什么?

关于
ul1
ul2
的错误。它本身链接到的显示它们实际上是
ULONG\u PTR
,而不是
DWORD

BOOL-WINAPI服务器支持函数(

struct\u HTTP\u FILTER\u CONTEXT pfc,//我刚才是说你的评论应该是一个答案,当你写答案时:)你很好,谢谢来到这里!那么您认为我必须更新delphi Winapi.Isapi2.pas并重写TFilterServerSupportFunctionProc=函数(…ULONG_PTR)吗?是的,需要更新delphi声明
Var LUrl: ansiString;
LUrl := 'Location: https://myserver'+#13#10#13#10
pfc.ServerSupportFunction(
  pfc, // var pfc{: THTTP_FILTER_CONTEXT};
  SF_REQ_SEND_RESPONSE_HEADER, // sfReq: DWORD
  PANSIchar('307 Temporary Redirect'), // pData: Pointer
  Dword(@LUrl[1]), // ul1: DWORD
  0);