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();
반환 값
시작 작업이 성공하면 S_OK 반환합니다. 그렇지 않으면 이 메서드는 오류 코드 중 하나를 반환할 수 있습니다.
반환 코드 | 묘사 |
---|---|
|
디바이스가 제거되었습니다. |
이 메서드는 Winerror.h에서 정의하는 다른 오류 코드 중 하나를 반환할 수 있습니다.
발언
드라이버가 복구 가능한 디바이스 오류를 감지할 수 있는 경우 드라이버가 IWDFIoTargetStateManagement::Stop 호출하여 로컬 I/O 대상에 대한 요청 전송을 일시적으로 중지한 다음, 나중에 시작 호출하여 요청 보내기를 다시 시작하도록 할 수 있습니다.
또한 드라이버가 IWDFUsbTargetPipe2::ConfigureContinuousReader 호출하여 USB 파이프에 대한 연속 판독기를 구성하는 경우 드라이버의 IPnpCallback::OnD0Entry 콜백 함수는 시작 호출하여 판독기를 시작해야 합니다.
드라이버는 시작 호출하고 IWDFIoTargetStateManagement::Stop 동기적으로 합니다. 드라이버가 이러한 함수 중 하나를 호출한 후에는 첫 번째 함수가 반환되기 전에 다른 함수를 호출해서는 안 됩니다.
시작대한 자세한 내용은 UMDF 일반 I/O 대상의 상태를 제어하는참조하세요.
I/O 대상에 대한 자세한 내용은 UMDF I/O 대상 사용참조하세요.
예제
다음 코드 예제에서는 먼저 드라이버가 USB 파이프 개체에 대한 IWDFIoTargetStateManagement 인터페이스를 가져오는 방법을 보여줍니다. 그런 다음, 코드 예제에서는 드라이버가 USB 파이프에 연속 판독기를 사용하는 경우 IPnpCallback::OnD0Entry 콜백 함수가 시작호출하는 방법을 보여줍니다.
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 |