b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

openmutex_createmutex failure_createmutex

电脑杂谈  发布时间:2017-01-18 05:00:54  来源:网络整理
createmutex

LPSECURITY_ATTRIBUTES lpMutexAttributes, // SD

BOOL bInitialOwner, // initial owner

LPCTSTR lpName // object name

);

delphi声明:

function CreateMutex(lpMutexAttributes: PSecurityAttributes; bInitialOwner: BOOL; lpName: PChar): THandle; stdcall;

创建一个互斥体(MUTEX)

返回值

Long,如执行成功,就返回互斥体对象的句柄;零表示出错。createmutex会设置GetLastError。即使返回的是一个有效句柄,但倘若指定的名字已经存在,GetLastError也会设为ERROR_ALREADY_EXISTS

参数表 参数 类型及说明

lpMutexAttributes SECURITY_ATTRIBUTES,指定一个SECURITY_ATTRIBUTES结构,或传递零值(将参数声明为ByVal As Long,并传递零值),表示使用不允许继承的默认描述符

bInitialOwner Long,如创建进程希望立即拥有互斥体,则设为TRUE。一个互斥体同时只能由一个线程拥有

lpName String,指定互斥体对象的名字。用vbNullString创建一个未命名的互斥体对象。如已经存在拥有这个名字的一个事件,则打开现有的已命名互斥体。这个名字可能不与现有的事件、信号机、可等待计时器或文件映射相符

注解

一旦不再需要,注意必须用CloseHandle函数将互斥体句柄关闭。从属于它的所有句柄都被关闭后,就会删除对象

进程中止前,一定要释放互斥体,如不慎未采取这个措施,就会将这个互斥体标记为废弃,并自动释放所有权。共享这个互斥体的其他应用程序也许仍然能够用它,但会接收到一个废弃状态信息,指出上一个所有进程未能正常关闭。这种状况是否会造成影响取决于涉及到的具体应用程序

函数功能:为现有的一个已命名互斥体对象创建一个新句柄

函数原型: HANDLE OpenMutex(

dwDesiredAccess, // access

DWORD

BOOL bInheritHandle, // inheritance option

LPCTSTR lpName // object name

);

delphi声明:

function OpenMutex(dwDesiredAccess: DWORD; bInheritHandle: BOOL; lpName: PChar): THandle; stdcall;

参数:

dwDesiredAccess:

MUTEX_ALL_ACCESS 请求对互斥体的完全访问

MUTEX_MODIFY_STATE 允许使用 ReleaseMutex 函数

SYNCHRONIZE 允许互斥体对象同步使用

bInheritHandle : 如希望子进程能够继承句柄,则为TRUE

lpName :要打开对象的名字

返回值:如执行成功,返回对象的句柄;零表示失败。若想获得更多错误信息,请调用GetLastError函数。

备注:一旦不再需要,注意一定要用 CloseHandle 关闭互斥体句柄。如对象的所有句柄都已关闭,那么对象也会删除

速查:Windows NT/2000/XP:3.1以上版本;Windows 95/98/Me:95以上版本:

头文件:Windows.h ;库文件:Kernel32.lib。

以下是DELPHI工程源码:

program Project1;

uses

Windows,

SysUtils,

Forms,

Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

var

_ExeName :String;

MutexHandle :THandle;

begin

_ExeName := 'App_Project';

MutexHandle := windows.OpenMutex(MUTEX_ALL_ACCESS, False, PChar(_ExeName));

if (MutexHandle = 0) and (windows.GetLastError <> ERROR_ALREADY_EXISTS)then

begin

windows.CreateMutex(nil, False, PChar(_ExeName));

Application.Initialize;

Application.CreateForm(TForm1, Form1);

Application.Run;

end

else

Application.Terminate;

end.


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-27066-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 陈羽
        陈羽

        现在世界新格局已经形成了

      热点图片
      拼命载入中...