解读 CreateMutexWin32A

179 篇文章 0 订阅
86 篇文章 0 订阅

解读 CreateMutexWin32A



//----- (10029390) --------------------------------------------------------
void *__stdcall CreateMutexWin32A(const unsigned __int16 *a1, int a2)
{
  struct _SECURITY_ATTRIBUTES *v2; // ebx@1
  char *v3; // eax@1
  const CHAR *v4; // esi@1
  ACL *v5; // edi@3
  HANDLE v6; // esi@5
  char v8; // [sp+Ch] [bp-38h]@3
  int v9; // [sp+20h] [bp-24h]@4
  char *v10; // [sp+24h] [bp-20h]@4
  int v11; // [sp+28h] [bp-1Ch]@4
  int v12; // [sp+2Ch] [bp-18h]@1
  int v13; // [sp+30h] [bp-14h]@1
  unsigned int v14; // [sp+34h] [bp-10h]@1
  int v15; // [sp+40h] [bp-4h]@1
  v2 = 0;
  v12 = 0;
  v13 = 0;
  v14 = 0;
  v15 = 0;
  v3 = (char *)CBuffer::Allocate((CBuffer *)&v12, wcslen(a1) + 2);
  v4 = v3;
  if ( !v3 || StringCbPrintfA(v3, v14, "%S", a1) < 0 )
    goto LABEL_12;
  v5 = BuildCustomizedSD(&v8);
  if ( v5 )
  {
    v11 = 0;
    v9 = 12;
    v2 = (struct _SECURITY_ATTRIBUTES *)&v9;
    v10 = &v8;
  }
  v6 = CreateMutexA(v2, 0, v4);
  FreeAdministratorSD(v5);
  if ( v6 )
  {
    if ( a2 )
      WaitForSingleObject(v6, 0xFFFFFFFF);
  }
  else
  {
LABEL_12:
    v6 = 0;
  }
  CBuffer::~CBuffer((CBuffer *)&v12);
  return v6;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值