GetSecurityInfo

By Adam
ISecurityInformation::GetSecurity

该函数通过句柄找到某一对象,并获取该对象的安全描述符。

DWORD GetSecurityInfo(
  HANDLE
handle,
  SE_OBJECT_TYPE
ObjectType,
  SECURITY_INFORMATION
SecurityInfo,
  PSID*
ppsidOwner,
  PSID*
ppsidGroup,
  PACL*
ppDacl,
  PACL*
ppSacl,
  PSECURITY_DESCRIPTOR*
ppSecurityDescriptor
);

 

变量

handle

    [in] 该句柄变量用以指定GetSecurityInfo函数将获取哪个的安全描述符。

ObjectType

    [in]指定对象类型的枚举型变量

SecurityInfo

    [i]指定函数所获得的安全信息的类型,可以取以下值。

ValueMeaning
DACL_SECURITY_INFORMATION如果这个标志被设置, ppDacl 变量将接收对象的自主访问控制列表
GROUP_SECURITY_INFORMATION如果这个标志被设置, ppsidGroup变量将接收对象primary group的SID
OWNER_SECURITY_INFORMATION如果这个标志被设置, ppsidOwner变量将接收对象拥有者的SID
SACL_SECURITY_INFORMATION如果这个标志被设置, ppSacl 变量将接收对象的系统访问控制列表

 ppsidOwner

    [out] ppsidOwner是指向安全描述符中SID所有者的指针,该指针将返回到ppSecurityDescriptor。仅当对SecurityInfo设置了OWNER_SECURITY_INFORMATION时返回指针才有效。如果不需要SID所有者,该变量设置为NULL。

ppsidGroup

    [out]  ppsidGroup是指向primary group SID的指针,该指针返回到ppSecurityDescriptor。仅当对SecurityInfo设置了GROUP_SECURITY_INFORMATION时返回指针才有效。如果不需要group SID,该变量设置为NULL。

ppDacl

    [out] ppDacl是指向DACL的指针,该指针返回到ppSecurityDescriptor。仅当对SecurityInfo设置了DACL_SECURITY_INFORMATION时返回指针才有效。如果不需要DACL 

,该变量设置为NULL。

ppSacl

    [out] ppSacl是指向SACL的指针,该指针返回到ppSecurityDescriptor。仅当对SecurityInfo设置了SACL_SECURITY_INFORMATION时返回指针才有效。如果不需要SACL

,该变量设置为NULL。

ppSecurityDescriptor

     [out]该变量 接受一个指向 对象 安全描述符的 指针。当你使用完这个指针,通过LocalFree函数释放返回的缓冲。

 

返回值

如果函数成功,返回值为ERROR_SUCCESS。

如果函数失败,返回值为非零值,具体定义在Winerror.h中。

 

附注

如果ppsidOwner,ppsidGroup,ppDacl,以及ppSacl都是非空,并且SwcurityInfo指定了相应的类型,则前述的各个变量将接受其对应的指针,这些指针返回到ppSecurityDescriptor中。

当句柄被打开后,要从对象的安全描述符中读取Owner,group,或者DACL,调用程序必须得到读控制访问的许可。要得到读控制访问的许可,调用者必须是对象的拥有者或者对象的DACL必须被授予访问权。

当句柄被打开后,要从安全描述符中读取SACL,调用程序必须被授予ACCESS_SYSTEM_SECURITY的访问权。获得这个权限的适当方法是启用SE_SECURIYT_NAME特权,打开ACCESS_SYSTEM_SECURITY句柄,接着关闭特权。

 

 需求

ClientRequires Windows XP, Windows 2000 Professional, or Windows NT Workstation 4.0.
ServerRequires Windows Server 2003, Windows 2000 Server, or Windows NT Server 4.0.
Header

Declared in Aclapi.h.

Library

Link to Advapi32.lib.

DLLRequires Advapi32.dll.

           

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
由于证券交易涉及到很多细节和安全问题,开发一个完整的证券交易系统需要有丰富的经验和专业知识。以下是一个简单的示例,仅供参考。 首先,需要定义证券交易系统中的一些基本数据类型和结构体: ``` // 证券类型 enum SecurityType { Stock, // 股票 Bond, // 债券 Option, // 期权 Futures // 期货 } // 证券信息 struct SecurityInfo { public SecurityType type; // 证券类型 public string symbol; // 证券代码 public string name; // 证券名称 public double price; // 当前价格 public double vol; // 当前交易量 } // 账户信息 struct AccountInfo { public string account; // 账户号码 public double balance; // 账户余额 public SecurityInfo[] portfolio; // 持仓信息 } ``` 然后,需要定义一些交易相关的类和接口: ``` // 委托类型 enum OrderType { Buy, // 买入 Sell, // 卖出 Cover, // 平仓 ShortSell // 卖空 } // 委托信息 struct OrderInfo { public string account; // 账户号码 public SecurityInfo security; // 证券信息 public OrderType type; // 委托类型 public double price; // 委托价格 public double vol; // 委托数量 } // 委托接口 interface IOrderService { void PlaceOrder(OrderInfo order); // 下单 void CancelOrder(OrderInfo order); // 撤单 } // 行情接口 interface IMarketDataService { SecurityInfo GetSecurityInfo(string symbol); // 获取证券信息 } // 账户接口 interface IAccountService { AccountInfo GetAccountInfo(string account); // 获取账户信息 void UpdateAccountInfo(AccountInfo account); // 更新账户信息 } ``` 接下来,需要实现这些接口的具体实现。具体实现方式可以根据实际情况选择不同的技术和框架。 最后,需要将所有模块集成起来,形成一个完整的证券交易系统。在集成过程中,需要注意各个模块之间的协作和数据交互的安全性。例如,需要对下单操作进行权限控制,防止非法操作等。 以上仅为一个简单的示例,实际开发中需要考虑更多的细节和安全问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值