다음을 통해 공유


PFN_GET_NEXT_CHUNK_DATA 콜백 함수(netdispumdddi.h)

DXGK_INTERRUPT_TYPE 인터럽트 형식이 DXGK_INTERRUPT_MICACAST_CHUNK_PROCESSING_COMPLETE 때 Microsoft DirectX 그래픽 커널 하위 시스템에 보고된 다음 Miracast 인코딩 청크에 대한 정보를 제공합니다. 이 함수의 데이터 형식은 PFN_GET_NEXT_CHUNK_DATA.

구문

PFN_GET_NEXT_CHUNK_DATA PfnGetNextChunkData;

NTSTATUS PfnGetNextChunkData(
  [in]           HANDLE hMiracastDeviceHandle,
  [in]           UINT TimeoutInMilliseconds,
  [in]           UINT AdditionalWaitEventCount,
  [in, optional] HANDLE *pAdditionalWaitEvents,
  [in, out]      UINT *pChunkDataBufferSize,
  [out]          MIRACAST_CHUNK_DATA *pChunkDataBuffer,
  [out]          UINT *pOutstandingChunksToProcess
)
{...}

매개 변수

[in] hMiracastDeviceHandle

Miracast 디바이스를 나타내는 핸들입니다. Miracast 사용자 모드 드라이버는 이전에 CreateMiracastContext 함수 호출에서 hMiracastDeviceHandle 매개 변수로 이 핸들을 얻었습니다.

[in] TimeoutInMilliseconds

Miracast 사용자 모드 드라이버에서 제공하는 시간 제한 간격 값(밀리초)입니다.

이 값이 INFINITE이면 운영 체제는 청크를 사용할 수 있게 될 때까지 GetNextChunkData 에 대한 호출을 차단합니다.

이 값이 0이고 청크가 준비되지 않은 경우 운영 체제는 GetNextChunkData에 대한 호출을 차단하지 않습니다.

[in] AdditionalWaitEventCount

pAdditionalWaitEvents 매개 변수에 제공되는 추가 이벤트 수입니다.

최대 4개의 대기 이벤트를 제공할 수 있습니다.

[in, optional] pAdditionalWaitEvents

GetNextChunkData가 새 인코딩 청크를 기다리는 동안 대기하는 이벤트 배열에 대한 선택적 포인터입니다.

[in, out] pChunkDataBufferSize

pChunkDataBuffer 버퍼의 크기(바이트)를 포함하는 변수에 대한 포인터입니다.

GetNextChunkData가 호출되면 이 매개 변수에는 pChunkDataBuffer의 크기가 포함됩니다.

GetNextChunkData가 성공 코드를 반환하는 경우 이 매개 변수에는 pChunkDataBuffer에 반환된 실제 인코딩 청크 데이터의 크기가 포함됩니다.

[out] pChunkDataBuffer

운영 체제에서 다음 인코딩 청크에 대한 정보를 저장하기 위해 제공하는 형식 MIRACAST_CHUNK_DATA 버퍼에 대한 포인터입니다. 이 매개 변수는 GetNextChunkData 호출에 성공한 경우에만 제공됩니다.

[out] pOutstandingChunksToProcess

이 호출이 반환된 시점에 드라이버에 사용할 수 있는 미해결 인코딩 청크 수를 포함하는 변수에 대한 포인터입니다. 이 매개 변수는 GetNextChunkData 호출에 성공한 경우에만 제공됩니다.

GPU에서 청크를 비동기적으로 완료하면 이 매개 변수는 미해결 청크 수만 나타냅니다.

반환 값

인코딩 청크에 대한 정보가 성공적으로 반환되면 STATUS_SUCCESS 상태 코드가 반환되고 *pChunkDataBufferSize 값은 0이 아닙니다.

이러한 추가 상태 코드를 반환할 수 있습니다.

설명

이 함수는 선택 사항입니다. 사용자 모드 디스플레이 드라이버는 GPU가 MIRACAST_CHUNK_DATA 데이터를 전달하여 청크 인코딩을 완료할 때 디스플레이 미니포트 드라이버가 GPU의 인터럽트에서 응답하는 경우에만 호출해야 합니다. 해당 인터럽트 시간에 PrivateDriverData 멤버입니다.

사용자 모드 디스플레이 드라이버는 MIRACAST_CHUNK_DATA 구조체의 크기와 MIRACAST_CHUNK_DATA 사용할 수 있습니다. PrivateDriverData 멤버는 청크의 크기를 계산하므로 반환된 버퍼에서 청크에서 청크로 이동하는 방법을 계산합니다.

이 함수를 호출할 때 가능한 한 많은 사용 가능한 패킷이 제공된 버퍼에 순차적으로 배치됩니다. 이 코드 조각은 각 패킷의 크기를 계산하는 방법을 보여줍니다.

ChunkSize == FIELD_OFFSET
    (D3DKMT_MIRACAST_CHUNK_DATA, PrivateDriverData) \
    + Chunk->ChunkData.PrivateDriverDataSize;

스레드 보안

한 번에 하나의 스레드만 이 함수를 호출해야 합니다. 그렇지 않으면 어떤 호출이 청크 정보를 수신하고 어떤 호출이 실패할지 예측할 수 없습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 8.1
지원되는 최소 서버 Windows Server 2012 R2
대상 플랫폼 데스크톱
머리글 netdispumdddi.h(Netdispumddddi.h 포함)

추가 정보

CreateMiracastContext

DXGK_INTERRUPT_TYPE

MIRACAST_CHUNK_DATA