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,但可能會因為實作而傳回其他成功碼。 下列錯誤碼通常會在作業失敗時傳回,但不代表唯一可能的錯誤值:

傳回碼 Description
E_FAIL
未指定的失敗。

值:0x80004005

E_ACCESS_DENIED
裝置目前正由另一個應用程式使用。

值:0x80070005

E_INVALIDARG
一或多個自變數無效。

值:0x80070057

E_OUTOFMEMORY
無法配置所需的記憶體。

值:0x8007000E

E_IMAPI_RECORDER_COMMAND_TIMEOUT
裝置無法在逾時期間內接受命令。 這可能是裝置進入不一致的狀態所造成,或命令的逾時值可能需要增加。

值:0xC0AA020D

HRESULT_FROM_WIN32 (ERROR_INVALID_HANDLE)
指定的句柄無效。

值:6

HRESULT_FROM_WIN32 (ERROR_DEV_NOT_EXIST)
指定的網路資源或裝置已不再可用。

值:55

E_IMAPI_RECORDER_LOCKED
上次作業期間與此錄製器相關聯的裝置已獨佔鎖定,導致此作業失敗。

值:0xC0AA0210

備註

您不應該呼叫這個方法來自行取得鎖定,因為 IDiscFormat2Data::Write 等寫入作業會為您取得鎖定。

每個錄製器都有鎖定計數。 第一次呼叫錄製器會鎖定裝置以進行獨佔存取。 應用程式可以使用 AcquireExclusiveAccess 方法多次在裝置上套用多個鎖定。 每個呼叫都會將鎖定計數遞增一個。

解除鎖定錄製器時,鎖定計數必須達到零,才能釋放其他客戶端的裝置。 呼叫 IDiscRecorder2::ReleaseExclusiveAccess 方法會將鎖定計數遞減一。

需要 對 AcquireExclusiveAccessReleaseExclusiveAccess 方法進行相同數目的呼叫,才能釋出裝置。 如果應用程式在保留獨佔存取權時意外結束或當機,CDROM.SYS 驅動程式會自動釋放這些獨佔鎖定。

如果裝置已鎖定,您可以呼叫 IDiscRecorder2::get_ExclusiveAccessOwner ,以擷取目前具有獨佔存取權的用戶端應用程式名稱。

規格需求

需求
最低支援的用戶端 Windows Vista、Windows XP 與 SP2 [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2003 [僅限傳統型應用程式]
目標平台 Windows
標頭 imapi2.h

另請參閱

IDiscRecorder2

IDiscRecorder2::ReleaseExclusiveAccess

IDiscRecorder2::get_ExclusiveAccessOwner