SerCx2CustomTransmitCreate 함수(sercx.h)
SerCx2CustomTransmitCreate 메서드는 사용자 지정 전송 개체를 만듭니다. 이 개체는 SerCx2(직렬 프레임워크 확장 버전 2)에서 사용자 지정 데이터 전송 메커니즘을 통해 직렬 컨트롤러에 전송 데이터를 쓰는 데 사용합니다.
구문
NTSTATUS SerCx2CustomTransmitCreate(
[in] WDFDEVICE Device,
[in] PSERCX2_CUSTOM_TRANSMIT_CONFIG CustomTransmitConfig,
[in] PWDF_OBJECT_ATTRIBUTES Attributes,
[out] SERCX2CUSTOMTRANSMIT *CustomTransmit
);
매개 변수
[in] Device
직렬 컨트롤러를 나타내는 프레임워크 디바이스 개체에 대한 WDFDEVICE 핸들입니다. 직렬 컨트롤러 드라이버는 EvtDriverDeviceAdd 콜백 함수에서 이 개체를 만들었습니다. 자세한 내용은 SerCx2InitializeDevice를 참조하세요.
[in] CustomTransmitConfig
SERCX2_CUSTOM_TRANSMIT_CONFIG 구조체에 대한 포인터입니다. 이 메서드를 호출하기 전에 호출자는 SERCX2_CUSTOM_TRANSMIT_CONFIG_INIT 함수를 호출하여 구조를 초기화해야 합니다. 이 구조에는 직렬 컨트롤러 드라이버에서 구현하는 이벤트 콜백 루틴 집합에 대한 포인터가 포함되어 있습니다. SerCx2는 이러한 함수를 호출하여 사용자 지정 전송 트랜잭션을 수행합니다.
[in] Attributes
새 사용자 지정 전송 개체에 할당할 특성을 설명하는 WDF_OBJECT_ATTRIBUTES 구조체에 대한 포인터입니다. 이 메서드를 호출하기 전에 호출자는 WDF_OBJECT_ATTRIBUTES_INIT 함수를 호출하여 구조를 초기화해야 합니다. 이 매개 변수는 선택 사항이며 직렬 컨트롤러 드라이버가 개체에 특성을 할당할 필요가 없는 경우 WDF_NO_OBJECT_ATTRIBUTES 지정할 수 있습니다. 자세한 내용은 설명 부분을 참조하세요.
[out] CustomTransmit
이 메서드가 새로 만든 사용자 지정 전송 개체에 SERCX2CUSTOMTRANSMIT 핸들을 쓰는 위치에 대한 포인터입니다. SerCx2 및 직렬 컨트롤러 드라이버는 이 개체를 참조하기 위해 후속 호출에서 이 핸들을 사용합니다.
반환 값
이 메서드는 호출에 성공하면 STATUS_SUCCESS 반환합니다. 가능한 오류 반환 값에는 다음 상태 코드가 포함됩니다.
반환 코드 | 설명 |
---|---|
|
사용자 지정 전송 개체는 이전 SerCx2CustomTransmitCreate 호출에서 이미 존재합니다. 또는 system-DMA-transmit 개체가 이전 SerCx2SystemDmaTransmit 에서 존재함만들기 호출; 또는 system-DMA-transmit 개체가 이전 SerCx2SystemDmaTransmit 에서 존재함만들기 호출; 또는 SerCx2PioTransmitCreate 가 PIO 전송 개체를 만들기 위해 아직 호출되지 않았습니다. |
|
매개 변수 값이 잘못되었습니다. |
|
구성->크기 값이 sizeof(SERCX2_CUSTOM_TRANSMIT_CONFIG)와 같지 않습니다. |
|
사용자 지정 전송 개체를 만드는 데 사용할 수 있는 리소스가 부족합니다. |
설명
이 메서드는 사용자 지정 전송 개체를 만들기 위해 직렬 컨트롤러 드라이버에 의해 호출됩니다. SerCx2는 이 개체를 사용하여 사용자 지정 전송 트랜잭션을 수행합니다. 이 트랜잭션은 사용자 지정 데이터 전송 메커니즘을 사용하여 직렬 컨트롤러에 전송 데이터를 쓰는 트랜잭션입니다.
직렬 컨트롤러 드라이버는 SerCx2CustomTransmitCreate를 호출하기 전에 SerCx2InitializeDevice 및 SerCx2PioTransmitCreate 메서드 를 성공적으로 호출해야 합니다.
SerCx2CustomTransmitCreate를 호출하기 전에 직렬 컨트롤러 드라이버는 SERCX2_CUSTOM_TRANSMIT_CONFIG_INIT 함수를 호출하여 CustomTransmitConfig가 가리키는 SERCX2_CUSTOM_TRANSMIT_CONFIG 구조를 초기화해야 합니다. 이 함수는 구조체의 다음 멤버를 0으로 설정합니다.
- 맞춤
- MinimumTransactionLength
- MaximumTransactionLength
- MinimumTransferUnit
- 전용
- 맞춤이 0이면 SerCx2는 데이터 맞춤 값을 1로 설정합니다. 즉, 쓰기 버퍼는 메모리의 임의 바이트 경계에서 시작할 수 있습니다.
- MinimumTransactionLength가 0이면 SerCx2는 최소 트랜잭션 길이를 1바이트로 설정합니다.
- MaximumTransactionLength가 0이면 SerCx2는 최대 트랜잭션 길이를 ((ULONG)-1)로 설정합니다.
- MinimumTransferUnit이 0이면 SerCx2는 최소 전송 단위를 1 바이트로 설정합니다.
- Exclusive이 0(FALSE)이면 전용 모드가 비활성화됩니다.
옵션으로 직렬 컨트롤러 드라이버는 Attributes 매개 변수를 사용하여 사용자 지정 전송 개체에 대한 컨텍스트를 만들고 삭제할 개체를 준비하기 위해 호출되는 EvtCleanupCallback 및 EvtDestroyCallback 함수에 대한 포인터를 제공할 수 있습니다. 자세한 내용은 WDF_OBJECT_ATTRIBUTES 참조하세요.
Attributes 매개 변수가 WDF_OBJECT_ATTRIBUTES 구조를 가리키는 경우 호출자는 WDF_OBJECT_ATTRIBUTES_INIT 초기화 함수가 이 구조체의 ParentObject, ExecutionLevel 및 SynchronizationScope 멤버에 쓰는 값을 덮어쓰지 않아야 합니다.
사용자 지정 전송 개체를 만드는 방법에 대한 자세한 내용은 SERCX2CUSTOMTRANSMIT. 사용자 지정 전송 트랜잭션에 대한 자세한 내용은 SerCx2 Custom-Transmit Transactions를 참조하세요.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 8.1 사용하여 사용할 수 있습니다. |
대상 플랫폼 | 유니버설 |
헤더 | sercx.h |
IRQL | PASSIVE_LEVEL |