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 포함) |