如何将数据写入LPSECURITY_ATTRIBUTES

时间:2013-11-03 15:12:43

标签: ada

为什么这不起作用?

with Win32.Winbase; use Win32.Winbase;
with Win32; use type Win32.BOOL;
with Win32.Winnt; use type Win32.Winnt.pHandle;

procedure Welcome is

   Startup_Info      : aliased STARTUPINFO;
   SecurityAttribute : aliased PSECURITY_ATTRIBUTES;

begin

   Startup_Info.dwFlags       := 123;  -- OK

   SecurityAttributes.nLength := 123;  -- ERROR 

end Welcome;

1 个答案:

答案 0 :(得分:1)

因为PSECURITY_ATTRIBUTES是一种访问(指针)类型,并且您尚未分配它的实例:

type PSECURITY_ATTRIBUTES is access all SECURITY_ATTRIBUTES;

所以你必须先分配一个实例:

SecurityAttributes  : PSECURITY_ATTRIBUTES := new SECURITY_ATTRIBUTES;

(因为它是一个指针类型,你不需要“别名”。)

现在您可以分配给它:

SecurityAttributes.nLength  :=   123;

或者,如果SecurityAttributes声明为SECURITY_ATTRIBUTES类型的别名,那么您的原始作业将起作用。按照名称,我强烈怀疑前导'P'是为了表明类型是指针类型。

这还没有编译,我要通过在线source code listing