IWDFIoTargetStateManagement::Start 메서드(wudfddi.h)
[경고: UMDF 2는 UMDF의 최신 버전이며 UMDF 1을 대체합니다. 모든 새 UMDF 드라이버는 UMDF 2를 사용하여 작성해야 합니다. UMDF 1에 새 기능이 추가되지 않으며 최신 버전의 Windows 10 UMDF 1에 대한 지원이 제한되어 있습니다. 유니버설 Windows 드라이버는 UMDF 2를 사용해야 합니다. 자세한 내용은 UMDF를 사용하여 시작 참조하세요.]
Start 메서드는 큐에 대기된 요청을 로컬 I/O 대상으로 보내기 시작합니다.
구문
HRESULT Start();
반환 값
작업이 성공하면 start가 S_OK 반환합니다. 그렇지 않으면 이 메서드는 오류 코드 중 하나를 반환할 수 있습니다.
반환 코드 | 설명 |
---|---|
|
디바이스가 제거되었습니다. |
이 메서드는 Winerror.h에서 정의하는 다른 오류 코드 중 하나를 반환할 수 있습니다.
설명
드라이버가 복구 가능한 디바이스 오류를 검색할 수 있는 경우 드라이버가 IWDFIoTargetStateManagement::Stop 을 호출하여 로컬 I/O 대상에 대한 요청 전송을 일시적으로 중지한 다음, 나중에 Start 를 호출하여 요청 보내기를 다시 시작하도록 할 수 있습니다.
또한 드라이버가 IWDFUsbTargetPipe2::ConfigureContinuousReader 를 호출하여 USB 파이프에 대한 연속 판독기를 구성하는 경우 드라이버의 IPnpCallback::OnD0Entry 콜백 함수가 Start 를 호출하여 판독기를 시작해야 합니다.
드라이버는 Start 및 IWDFIoTargetStateManagement::Stop 을 동기적으로 호출해야 합니다. 드라이버가 이러한 함수 중 하나를 호출한 후에는 첫 번째 함수가 반환되기 전에 다른 함수를 호출하면 안 됩니다.
시작에 대한 자세한 내용은 UMDF에서 일반 I/O 대상의 상태 제어를 참조하세요.
I/O 대상에 대한 자세한 내용은 UMDF에서 I/O 대상 사용을 참조하세요.
예제
다음 코드 예제에서는 먼저 드라이버가 USB 파이프 개체에 대한 IWDFIoTargetStateManagement 인터페이스를 가져오는 방법을 보여 줍니다. 그런 다음, 코드 예제에서는 드라이버가 USB 파이프에 연속 판독기를 사용하는 경우 IPnpCallback::OnD0Entry 콜백 함수가 Start를 호출하는 방법을 보여 줍니다.
IWDFIoTargetStateManagement * m_pIoTargetInterruptPipeStateMgmt = NULL;
IWDFUsbTargetFactory * pIUsbTargetFactory = NULL;
IWDFUsbTargetDevice * pIUsbTargetDevice = NULL;
IWDFUsbInterface * pIUsbInterface = NULL;
IWDFUsbTargetPipe * pIUsbPipe = NULL;
hr = m_FxDevice->QueryInterface(IID_PPV_ARGS(&pIUsbTargetFactory));
if (FAILED(hr))
{...}
hr = pIUsbTargetFactory->CreateUsbTargetDevice(&pIUsbTargetDevice);
if (FAILED(hr))
{...}
hr = pIUsbTargetDevice->RetrieveUsbInterface(0, &pIUsbInterface);
if (FAILED(hr))
{...}
NumEndPoints = pIUsbInterface->GetNumEndPoints();
for (UCHAR PipeIndex = 0; PipeIndex < NumEndPoints; PipeIndex++)
{
hr = pIUsbInterface->RetrieveUsbPipeObject(PipeIndex, &pIUsbPipe);
if (FAILED(hr))
{...}
else
{
if (pIUsbPipe->IsInEndPoint())
{
if (UsbdPipeTypeInterrupt == pIUsbPipe->GetType())
{
m_pIUsbInterruptPipe = pIUsbPipe;
hr = m_pIUsbInterruptPipe->QueryInterface(IID_PPV_ARGS(&m_pIoTargetInterruptPipeStateMgmt));
if (FAILED(hr))
{...}
}
}
}
}
HRESULT
CMyDevice::OnD0Entry(
__in IWDFDevice* pWdfDevice,
__in WDF_POWER_DEVICE_STATE previousState
)
{
...
m_pIoTargetInterruptPipeStateMgmt->Start();
...
return S_OK;
}
요구 사항
요구 사항 | 값 |
---|---|
지원 종료 | UMDF 2.0 이상에서는 사용할 수 없습니다. |
대상 플랫폼 | 데스크톱 |
최소 UMDF 버전 | 1.5 |
머리글 | wudfddi.h(Wudfddi.h 포함) |
DLL | WUDFx.dll |