NdisCopyFromPacketToPacketSafe 함수(ndis.h)

참고 NDIS 5. x 는 더 이상 사용되지 않으며 NDIS 6으로 대체됩니다. x. 새로운 NDIS 드라이버 개발은 Windows Vista로 시작하는 네트워크 드라이버를 참조하세요. NDIS 5 포팅에 대한 자세한 내용입니다. x 드라이버를 NDIS 6으로. x, NDIS 5.x 드라이버를 NDIS 6.0으로 포팅을 참조하세요.

NdisCopyFromPacketToPacket 은 지정된 범위의 데이터를 한 패킷에서 다른 패킷으로 복사합니다.

구문

void NdisCopyFromPacketToPacketSafe(
  [in]  IN PNDIS_PACKET     Destination,
  [in]  IN UINT             DestinationOffset,
  [in]  IN UINT             BytesToCopy,
  [in]  IN PNDIS_PACKET     Source,
  [in]  IN UINT             SourceOffset,
  [out] OUT PUINT           BytesCopied,
        IN MM_PAGE_PRIORITY Priority
);

매개 변수

[in] Destination

대상 패킷 설명자에 대한 포인터입니다.

[in] DestinationOffset

복사한 데이터 쓰기를 시작할 대상 패킷 내의 바이트 오프셋을 지정합니다.

[in] BytesToCopy

복사할 바이트 수를 지정합니다.

[in] Source

원본 패킷 설명자에 대한 포인터입니다.

[in] SourceOffset

데이터 복사를 시작할 원본 패킷 내의 바이트 오프셋을 지정합니다.

[out] BytesCopied

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

Priority

반환 값

없음

설명

반환 값: 없음

드라이버는 NdisCopyFromPacketToPacket 대신 NdisCopyFromPacketToPacketSafe를 호출해야 합니다. NDIS 5.1 미니포트 드라이버는 NdisCopyFromPacketToPacket 대신 NdisCopyFromPacketToPacketSafe를 호출해야 합니다. NdisCopyFromPacketToPacket과 달리 NdisCopyFromPacketToPacketSafe는 시스템 리소스가 부족하거나 소진된 경우 버그 검사 발생시키지 않습니다.

NdisCopyFromPacketToPacket의 호출자는 원본 패킷이 아닌 경우 대상 패킷을 할당합니다. 대상 패킷의 패킷 설명자에는 데이터를 수신하기에 충분한 연결된 버퍼 설명자가 있어야 합니다.

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

NdisCopyFromPacketToPacket 은 지정된 원본 과 연결된 대역 외 정보를 대상에 복사하지 않습니다. 이 정보를 복사하기 위해 드라이버는 NDIS_OOB_DATA_FROM_PACKET 반환된 포인터를 사용한 다음 NdisMoveMemory를 호출할 수 있습니다.

드라이버는 NdisCopyFromPacketToPacket을 호출하기 전에 보유하고 있는 스핀 잠금을 해제해야 합니다.

  • 대상 플랫폼: 유니버설
  • 버전: Windows Vista의 NDIS 6.0 드라이버에는 지원되지 않습니다. 대신 NdisCopyFromNetBufferToNetBuffer를 사용합니다. Windows Vista 및 Windows XP에서 NDIS 5.1 드라이버에 대해 지원되지만 대신 NdisCopyFromPacketToPacketSafe를 사용합니다.

요구 사항

요구 사항
헤더 ndis.h(Ndis.h 포함)
라이브러리 Ndis.lib
IRQL IRQL <= DISPATCH_LEVEL

추가 정보