다음을 통해 공유


IStiUSD::Initialize 메서드(stiusd.h)

스틸 이미지 미니 드라이버의 IStiUSD::Initialize 메서드는 IStiUSD 인터페이스를 정의하는 COM 개체의 인스턴스를 초기화합니다.

통사론

HRESULT Initialize(
  PSTIDEVICECONTROL pHelDcb,
  DWORD             dwStiVersion,
  HKEY              hParametersKey
);

매개 변수

pHelDcb

IStiDeviceControl COM 인터페이스대한 호출자 제공 포인터입니다.

dwStiVersion

호출자가 제공한 STI 버전 번호입니다. 이 값은 Sti.hSTI_VERSION 의해 정의됩니다.

hParametersKey

디바이스별 정보를 저장할 레지스트리 키에 대한 호출자 제공 핸들입니다.

반환 값

작업이 성공하면 메서드는 S_OK 반환해야 합니다. 그렇지 않으면 stierr.h정의된 STIERR 접두사 오류 코드 중 하나를 반환해야 합니다.

발언

IStiUSD::Initialize 메서드는 스틸 이미지 미니 드라이버에서 내보낸 후 호출된 첫 번째 IStiUSD 메서드입니다. 메서드는 드라이버와 디바이스를 초기화해야 합니다.

이 메서드는 받은 IStiDeviceControl COM 인터페이스 포인터를 저장해야 하며 해당 인터페이스의 IStiDeviceControl::AddRef 메서드를 호출해야 합니다.

전용 포트(예: SCSI 디바이스)에 연결된 디바이스의 경우 이 메서드는 일반적으로 IStiDeviceControl::GetMyDevicePortName호출하여 얻은 디바이스 포트 이름을 사용하여 CreateFile 호출하여 디바이스에 대한 읽기/쓰기 경로를 만듭니다(Microsoft Windows SDK 설명서에 설명됨).

공유 포트(예: 직렬 포트 디바이스)의 디바이스의 경우 포트의 다른 디바이스에 대한 액세스가 잠기므로 IStiUSD::Initialize 메서드에서 포트를 여는 것은 권장되지 않습니다. 이러한 디바이스의 경우 IStiUSD::LockDevice 메서드 내에서 CreateFile 호출하는 것이 좋습니다.

열려 있는 디바이스가 CreateFile 대한 여러 호출이 허용되지 않는 디바이스인 경우(예: 직렬 포트에 연결된 디바이스) 호출자가 다음 CodeExample설명한 대로 데이터 전송을 위해 디바이스를 열지 않는 한 드라이버는 일반적으로 CreateFile 호출하지 않습니다.

IStiUSD::Initialize 메서드는 수신된 STI 버전 번호의 유효성을 검사하고 수신된 버전이 드라이버의 버전과 일치하지 않으면 오류를 반환해야 합니다.

다음 예제에서는 IStiDeviceControl::GetMyDeviceOpenMode 대한 호출이 애플리케이션이 데이터 전송을 위해 디바이스를 열었다는 것을 나타내는 경우에만 디바이스 포트를 엽니다. 이러한 코드는 직렬 포트 디바이스와 같은 여러 CreateFile 호출을 지원할 수 없는 디바이스에 사용될 수 있습니다.

예제

STDMETHODIMP MyUSDDevice::Initialize(
    PSTIDEVICECONTROL pDcb,
    DWORD             dwStiVersion,
    HKEY              hParametersKey)
{
    HRESULT hres = STI_OK;
    DWORD   dwMode = 0;
    if (!pDcb)
    {
        hres = STIERR_INVALID_PARAM;
    }
    else
    {
        // Store IStiDeviceControl object pointer
        m_pDcb = pDcb;
        m_pDcb->AddRef();
        // If we opened in data mode - should open device right now,
        // otherwise postpone open till lock
        m_pDcb->GetMyDeviceOpenMode(&dwMode);
        if (dwMode & STI_DEVICE_CREATE_DATA)
            hres = OpenMyPort();
    }
    return hres;
}

요구 사항

요구
대상 플랫폼 바탕 화면
헤더 stiusd.h(Stiusd.h 포함)