DirectInput DirectInput C/C++ 레퍼런스 인터페이스 IDirectInputDevice8 Acquire [목차열람] [주소복사] [슬롯비우기] |
Microsoft DirectX 9.0 |
입력 장치에의 액세스권을 얻어온다.
구문
HRESULT Acquire(VOID);
반환값
성공했을 경우는, DI_OK 를 돌려준다. 장치가 취득 끝난 경우는, S_FALSE 를 돌려준다.
실패했을 경우는, 다음의 몇개의 에러값을 돌려준다.
DIERR_INVALIDPARAM 무효인 파라미터가, 돌아오는 함수에 건네졌는지, 개체가 그 함수를 호출할 수 있는 상태에 없었다. 이 값은, 표준의 구성 요소 개체 모델 (COM) 반환값인 E_INVALIDARG 에 동일하다. DIERR_NOTINITIALIZED 이 개체는 초기화되지 않다. DIERR_OTHERAPPHASPRIO 다른 애플리케이션의 우선 레벨이 높기 때문에, 이 호출을 실행할 수 없다. 이 값은, 표준의 COM 반환값인 E_ACCESSDENIED 에 동일하다. 이 에러가 돌려받는 것은, 장치에 대한 애플리케이션의 액세스권이 foreground 액세스권인 것에도 불구하고, 백그라운드일 때 장치를 취득하려고 했을 경우이다.
주의
장치 취득전에 IDirectInputDevice8::SetDataFormat 메서드나 IDirectInputDevice8::SetActionMap 메서드를 사용해, 데이터 형식을 설정해야 한다. 데이터 형식이 설정되지 않은 경우,IDirectInputDevice8::Acquire 는 DIERR_INVALIDPARAM 를 돌려준다.
장치에 대해서 IDirectInputDevice8::GetDeviceState 또는 IDirectInputDevice8::GetDeviceData 메서드를 호출하기 전에, 그 장치를 취득해 두지 않으면 안 된다.
장치 취득에서는,참조 카운트를 사용하지 않는다. 이 때문에, 애플리케이션이 IDirectInputDevice8::Acquire 메서드를 2 회 호출해, 그 후 IDirectInputDevice8::Unacquire 메서드를 1 회 호출하면, 장치는 릴리즈 된다.
IDirectInputDevice8::BuildActionMap 가 성공해도, 어느 액션도 맵 되지 않는 경우, 그 후 IDirectInputDevice8::SetActionMap 를 호출하면 DI_OK 가 돌려주어지지만,IDirectInputDevice8::Acquire 를 호출하면 실패해, DIERR_INVALIDPARAM 가 반환된다.