NdisCopyFromNetBufferToNetBuffer 함수(ndis/nblapi.h)

NdisCopyFromNetBufferToNetBuffer 함수를 호출하여 원본 NET_BUFFER 구조체에서 대상 NET_BUFFER 구조로 데이터를 복사합니다.

구문

NDIS_EXPORTED_ROUTINE NDIS_STATUS NdisCopyFromNetBufferToNetBuffer(
  [in]  NET_BUFFER       *Destination,
  [in]  ULONG            DestinationOffset,
  [in]  ULONG            BytesToCopy,
  [in]  NET_BUFFER const *Source,
  [in]  ULONG            SourceOffset,
  [out] ULONG            *BytesCopied
);

매개 변수

[in] Destination

이전에 할당된 대상 NET_BUFFER 구조체에 대한 포인터입니다.

[in] DestinationOffset

복사된 데이터 쓰기를 시작할 대상 NET_BUFFER 구조 내의 바이트 오프셋입니다. DestinationOffset에 대한 자세한 내용은 다음 설명 섹션을 참조하세요.

[in] BytesToCopy

복사할 바이트 수입니다.

[in] Source

이전에 할당된 원본 NET_BUFFER 구조체에 대한 포인터입니다.

[in] SourceOffset

데이터 복사를 시작할 원본 NET_BUFFER 구조 내의 바이트 오프셋입니다. SourceOffset에 대한 자세한 내용은 다음 설명 섹션을 참조하세요.

[out] BytesCopied

이 함수가 실제로 복사한 바이트 수를 반환하는 호출자 제공 변수에 대한 포인터입니다. 원본에 데이터가 부족하거나 대상이 공간이 부족한 경우 이 숫자는 BytesToCopy 값보다 작을 수 있습니다.

반환 값

NdisCopyFromNetBufferToNetBuffer는 다음 상태 값 중 하나를 반환합니다.

반환 코드 설명
NDIS_STATUS_SUCCESS
복사 작업이 성공적으로 완료되었습니다.
NDIS_STATUS_RESOURCES
리소스가 부족하여 복사 작업이 실패했습니다.

설명

NdisCopyFromNetBufferToNetBuffer의 호출자는 대상 NET_BUFFER 구조체와 원본 NET_BUFFER 구조도 할당합니다. 대상 NET_BUFFER 구조체의 MDL에는 데이터를 수신할 수 있는 충분한 공간이 있어야 합니다.

원본 NET_BUFFER 구조체에 데이터가 부족하거나 지정된 바이트 수가 복사되기 전에 대상 NET_BUFFER 구조체의 공간이 부족하면 복사 작업이 중지됩니다. 두 경우 모두 NdisCopyFromNetBufferToNetBuffer 는 원본에서 대상 NET_BUFFER 구조로 성공적으로 복사된 바이트 수를 반환합니다.

호출자는 원본 및 대상 NET_BUFFER 구조에서 CurrentMdlOffsetCurrentMdl 값이 올바른지 확인해야 합니다. NDIS는 대상 NET_BUFFER 멤버를 변경하지 않습니다. 호출자는 NdisCopyFromNetBufferToNetBuffer가 반환된 후 대상 NET_BUFFER DataLength, DataOffsetCurrentMdlOffset 값을 업데이트해야 합니다.

NDIS는 NdisCopyFromNetBufferToNetBufferDestionationOffsetSourceOffset 매개 변수의 오프셋을 현재 데이터 오프셋의 오프셋으로 사용합니다. 예를 들어 대상 NET_BUFFER CurrentMdlOffset 값이 x이고 DestinationOffset 값이 y이면 NDIS는 CurrentMdl 값이 설명하는 메모리의 x+ y 오프셋에서 대상 NET_BUFFER 데이터를 복사합니다. 원본 NET_BUFFER CurrentMdlOffsetSourceOffset 값에 유사한 규칙이 적용됩니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 NDIS 6.0 이상에서 지원됩니다.
대상 플랫폼 유니버설
헤더 ndis/nblapi.h(include ndis.h)
라이브러리 Ndis.lib
IRQL <= DISPATCH_LEVEL
DDI 규정 준수 규칙 Irql_NetBuffer_Function(ndis)

추가 정보

NET_BUFFER