KsStreamIo 함수(ks.h)
KsStreamIo 함수는 지정된 파일 개체에 대해 스트림 읽기 또는 쓰기를 수행합니다. 함수는 가능하면 FastIoDispatch 를 사용하려고 시도하거나 디바이스 개체에 대한 읽기 또는 쓰기 요청을 생성합니다.
구문
KSDDKAPI NTSTATUS KsStreamIo(
[in] PFILE_OBJECT FileObject,
[in, optional] PKEVENT Event,
[in, optional] PVOID PortContext,
[in, optional] PIO_COMPLETION_ROUTINE CompletionRoutine,
[in, optional] PVOID CompletionContext,
[in, optional] KSCOMPLETION_INVOCATION CompletionInvocationFlags,
[out] PIO_STATUS_BLOCK IoStatusBlock,
[in, out] PVOID StreamHeaders,
[in] ULONG Length,
[in] ULONG Flags,
[in] KPROCESSOR_MODE RequestorMode
);
매개 변수
[in] FileObject
I/O를 수행할 파일 개체를 지정합니다.
[in, optional] Event
필요에 따라 I/O에서 사용할 이벤트를 포함합니다. 전달되지 않으면 호출이 동기 파일 개체에 있는 것으로 간주되거나 호출자가 파일 개체의 이벤트를 기다리고 있거나 비동기적으로 완료될 수 있습니다. 를 사용하고 KSSTREAM_SYNCHRONOUS 플래그가 설정되지 않은 경우 개체 관리자가 할당한 이벤트여야 합니다. 호출자가 비동기 I/O를 수행하는 경우 파일 개체의 이벤트를 기다리거나 이 매개 변수의 이벤트를 전달하고 대기해야 합니다. 이 작업이 수행되지 않으면 호출자가 호출에 의해 IoStatusBlock이 업데이트된 시기를 알 수 있는 방법이 없습니다.
[in, optional] PortContext
필요에 따라 완료 포트에 대한 컨텍스트 정보를 포함합니다.
[in, optional] CompletionRoutine
필요에 따라 이 IRP에 대한 완료 루틴을 가리킵니다.
[in, optional] CompletionContext
CompletionRoutine을 지정하면 완료 루틴 콜백에 컨텍스트 포인터가 제공됩니다.
[in, optional] CompletionInvocationFlags
완료 루틴이 호출되는 시기를 지정하는 호출 플래그를 지정합니다. 사용된 값은 다음 표를 참조하세요.
[out] IoStatusBlock
상태 정보를 반환할 위치입니다. 요청자 모드에 관계없이 항상 유효한 주소로 간주됩니다. 호출이 상태 업데이트될 때까지 값은 유효한 상태로 유지되어야 합니다. 호출자는 동기 I/O를 수행하거나 이 주소가 유효하지 않도록 허용하기 전에 파일 개체의 이벤트 또는 Event 매개 변수에 전달된 이벤트를 기다려야 합니다.
[in, out] StreamHeaders
스트림 헤더 목록을 지정합니다. 이 주소와 데이터 버퍼의 주소는 적절한 액세스를 위해 검색된 것으로 간주됩니다. 스트리밍 헤더를 제출하는 커널 모드 클라이언트는 NonPagedPool 메모리에서 헤더를 할당해야 합니다.
[in] Length
전달된 StreamHeaders 의 크기를 지정합니다.
[in] Flags
I/O에 대한 다양한 플래그를 지정합니다. 사용된 값은 다음 표를 참조하세요.
[in] RequestorMode
생성해야 하는 경우 IRP에 배치할 프로세서 모드를 나타냅니다. 이 변수는 빠른 I/O 호출을 수행할 수 있는지 여부도 결정합니다. 요청자 모드가 커널 모드가 아니지만 이전 모드인 경우 빠른 I/O를 사용할 수 없습니다.
반환 값
KsStreamIo 함수는 성공하면 STATUS_SUCCESS 반환하고, 작업이 보류 중이면 STATUS_PENDING, 실패하면 I/O 오류를 반환합니다.
설명
다음 열거형 값은 CompletionInvocationFlags 변수에 사용되며 형식은 KSCOMPLETION_INVOCATION.
CompletionInvocationFlags | Description |
---|---|
KsInvokeOnSuccess | 성공 시 완료 루틴을 호출합니다. |
KsInvokeOnError | 오류 발생 시 완료 루틴을 호출합니다. |
KsInvokeOnCancel | 취소 시 완료 루틴을 호출합니다. |
Flags 변수에는 다음과 같은 정의된 값이 사용됩니다.
플래그 | Description |
---|---|
KSSTREAM_READ | IOCTL_KS_STREAMREAD IRP를 빌드하도록 지정합니다. 이것이 기본값입니다. |
KSSTREAM_WRITE | IOCTL_KS_STREAMWRITE IRP를 빌드하도록 지정합니다. |
KSSTREAM_PAGED_DATA | 데이터를 페이지할 수 있도록 지정합니다. 이는 기본값이며 항상 사용할 수 있습니다. |
KSSTREAM_NONPAGED_DATA | 데이터가 페이징되지 않으며 성능 향상으로 사용할 수 있도록 지정합니다. |
KSSTREAM_SYNCHRONOUS | IRP가 동기식임을 지정합니다. 즉 , Event 매개 변수가 전달되면 개체 관리자 이벤트로 처리되지 않으며 참조되거나 역참조되지 않습니다. |
KSSTREAM_READ KSPROBE_STREAMREAD 동일합니다.
마찬가지로 KSSTREAM_WRITE KSPROBE_STREAMWRITE 동일합니다.
요구 사항
요구 사항 | 값 |
---|---|
대상 플랫폼 | 유니버설 |
헤더 | ks.h(Ks.h 포함) |
라이브러리 | Ks.lib |