IDiscRecorder2::AcquireExclusiveAccess 方法 (imapi2.h)
获取对设备的独占访问权限。
语法
HRESULT AcquireExclusiveAccess(
[in] VARIANT_BOOL force,
[in] BSTR __MIDL__IDiscRecorder20000
);
参数
[in] force
设置为 VARIANT_TRUE 以获取对卷的独占访问权限,无论文件系统卷是否可以卸载。 如果VARIANT_FALSE,则仅当卷上没有装载文件系统时,此方法才获得独占访问权限。
[in] __MIDL__IDiscRecorder20000
包含请求独占访问的客户端应用程序的友好名称的字符串。 不能为 NULL 或零长度字符串。 字符串必须符合 DDK 中IOCTL_CDROM_EXCLUSIVE_ACCESS控制代码的限制。
返回值
S_OK成功后返回,但其他成功代码可能由于实现而返回。 以下错误代码通常在操作失败时返回,但不表示唯一可能的错误值:
返回代码 | 说明 |
---|---|
|
未知故障。
值:0x80004005 |
|
设备当前正由另一个应用程序使用。
值:0x80070005 |
|
一个或多个参数无效。
值:0x80070057 |
|
未能分配所需的内存。
值:0x8007000E |
|
设备未能在超时期限内接受命令。 这可能是由于设备进入了不一致状态,或者可能需要增加命令的超时值。
值:0xC0AA020D |
|
指定的句柄无效。
值:6 |
|
指定的网络资源或设备不再可用。
值:55 |
|
上次操作期间与此记录器关联的设备已被独占锁定,导致此操作失败。
值:0xC0AA0210 |
注解
你不必调用此方法来自行获取锁,因为 IDiscFormat2Data::Write 等写入操作会为你获取锁。
每个记录器都有锁计数。 第一次调用记录器会锁定设备以便进行独占访问。 应用程序可以多次使用 AcquireExclusiveAccess 方法在设备上应用多个锁。 每次调用都会将锁计数递增 1。
解锁记录器时,锁定计数必须达到零,以便为其他客户端释放设备。 调用 IDiscRecorder2::ReleaseExclusiveAccess 方法会将锁计数减一。
需要对 AcquireExclusiveAccess 和 ReleaseExclusiveAccess 方法进行相等数量的调用才能释放设备。 如果应用程序在保留独占访问权限时意外退出或崩溃,CDROM.SYS 驱动程序将自动释放这些独占锁。
如果设备已锁定,可以调用 IDiscRecorder2::get_ExclusiveAccessOwner 来检索当前具有独占访问权限的客户端应用程序的名称。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista、Windows XP 和 SP2 [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
目标平台 | Windows |
标头 | imapi2.h |