IWDFIoTarget2::FormatRequestForSetInformation 메서드(wudfddi.h)
[경고: UMDF 2는 UMDF의 최신 버전이며 UMDF 1을 대체합니다. 모든 새 UMDF 드라이버는 UMDF 2를 사용하여 작성해야 합니다. UMDF 1에는 새로운 기능이 추가되지 않으며 최신 버전의 Windows 10에서는 UMDF 1에 대한 지원이 제한되어 있습니다. 유니버설 Windows 드라이버는 UMDF 2를 사용해야 합니다. 자세한 내용은 UMDF시작 .]을 참조하세요.
FormatRequestForSetInformation 메서드는 파일에 대한 정보를 설정하기 위해 I/O 요청의 형식을 지정하지만 I/O 대상에 요청을 보내지는 않습니다.
통사론
HRESULT FormatRequestForSetInformation(
[in] IWDFIoRequest *pRequest,
[in] WDF_FILE_INFORMATION_CLASS InformationClass,
[in, optional] IWDFFile *pFile,
[in, optional] IWDFMemory *pInformationMemory,
[in, optional] PWDFMEMORY_OFFSET pInformationMemoryOffset
);
매개 변수
[in] pRequest
I/O 요청을 나타내는 요청 개체의 IWDFIoRequest 인터페이스에 대한 포인터입니다.
[in] InformationClass
설정할 정보의 형식을 지정하는 WDF_FILE_INFORMATION_CLASS형식화된 값입니다.
[in, optional] pFile
I/O 요청과 연결된 파일 개체의 IWDFFile 인터페이스에 대한 포인터입니다. 이 매개 변수는 로컬 및 원격I/O 대상에 필요하며 파일 핸들 I/O 대상의 경우 선택 사항입니다(NULL 수 있음).
[in, optional] pInformationMemory
메모리 개체의 IWDFMemory 인터페이스에 대한 포인터입니다. 이 개체는 InformationClass 매개 변수가 지정하는 드라이버 제공 파일 정보를 포함하는 입력 버퍼를 나타냅니다. 이 매개 변수는 선택 사항이며 NULL 수 있습니다.
[in, optional] pInformationMemoryOffset
선택적 바이트 오프셋 및 길이 값을 제공하는 WDFMEMORY_OFFSET 구조체에 대한 포인터입니다. 프레임워크는 이러한 값을 사용하여 입력 버퍼 내에서 데이터 전송의 시작 주소와 길이를 결정합니다. 이 포인터가 NULL 경우 데이터 전송은 입력 버퍼의 시작 부분에서 시작되고 전송 크기는 버퍼 크기입니다.
반환 값
FormatRequestForSetInformation 작업이 성공하면 S_OK 반환합니다. 그렇지 않으면 메서드가 다음 값을 반환할 수 있습니다.
반환 코드 | 묘사 |
---|---|
|
프레임워크에서 메모리를 할당할 수 없습니다. |
이 메서드는 Winerror.h에 포함된 다른 값 중 하나를 반환할 수 있습니다.
발언
FormatRequestForSetInformation 메서드와 IWDFIoRequest::Send 메서드를 사용하여 I/O 대상요청을 동기적으로 또는 비동기적으로 보냅니다.
예제
다음 코드 예제는 IQueueCallbackDefaultIoHandler::OnDefaultIoHandler 콜백 함수의 일부입니다. 콜백 함수가 설정된 정보 요청을 받으면 디바이스의 기본 I/O 대상으로 요청을 보냅니다.
void
CMyQueue::OnDefaultIoHandler(
IWDFIoQueue* pQueue,
IWDFIoRequest* pRequest
)
{
HRESULT hr;
IWDFDevice *pDevice;
IWDFIoTarget *pTarget;
IWDFFile *pFile;
IWDFMemory *pInMemory;
WDF_FILE_INFORMATION_CLASS infoClass;
//
// Obtain the device, default I/O target, and file object.
//
pQueue->GetDevice(&pDevice);
pDevice->GetDefaultIoTarget(&pTarget);
pRequest->GetFileObject(&pFile);
if (WdfRequestQueryInformation==pRequest->GetType())
{
//
// Declare an IWDFIoRequest2 interface pointer and obtain the
// IWDFIoRequest2 interface from the IWDFIoRequest interface.
//
CComQIPtr<IWDFIoRequest2> r2 = pRequest;
//
// Declare an IWDFIoTarget2 interface pointer and obtain the
// IWDFIoTarget2 interface from the IWDFIoTarget interface.
//
CComQIPtr<IWDFIoTarget2> target2(pTarget);
//
// Get the I/O request's input buffer.
//
hr = pWdfRequest2->RetrieveInputMemory(&pInMemory);
if (!SUCCEEDED(hr)) goto Error;
//
// Get the I/O request's parameters.
//
hr = pWdfRequest2->GetSetInformationParameters(&infoClass,
NULL);
if (!SUCCEEDED(hr)) goto Error;
//
// Format a query information request and send it to the I/O target.
//
hr = target2->FormatRequestForSetInformation(pRequest,
infoClass,
pFile,
pInMemory,
NULL);
if (!SUCCEEDED(hr)) goto Error;
hr = pRequest->Send(pTarget,
WDF_REQUEST_SEND_OPTION_SYNCHRONOUS,
0);
}
...
Error;
//
// Release objects.
//
SAFE_RELEASE(pDevice);
SAFE_RELEASE(pTarget);
SAFE_RELEASE(pFile);
SAFE_RELEASE(pOutMemory);
}
요구 사항
요구 | 값 |
---|---|
지원 종료 | UMDF 2.0 이상에서는 사용할 수 없습니다. |
대상 플랫폼 | 바탕 화면 |
최소 UMDF 버전 | 1.9 |
헤더 | wudfddi.h(Wudfddi.h 포함) |
DLL | WUDFx.dll |