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

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

구문

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

매개 변수

pHelDcb

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

dwStiVersion

호출자가 제공한 STI 버전 번호입니다. 이 값은 Sti.h의 STI_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 포함)