IStream 인터페이스(objidl.h)

IStream 인터페이스를 사용하면 데이터를 읽고 써서 개체를 스트리밍할 수 있습니다. Stream 개체는 구조화된 스토리지 개체의 데이터를 포함하며, 여기서 스토리지는 구조를 제공합니다. 간단한 데이터는 스트림에 직접 쓸 수 있지만, 가장 자주 스트림은 스토리지 개체 내에 중첩된 요소입니다. 표준 파일과 비슷합니다.

IStream 인터페이스는 MS-DOS FAT 파일 함수와 유사한 메서드를 정의합니다. 예를 들어 각 스트림 개체에는 고유한 액세스 권한과 검색 포인터가 있습니다. DOS 파일과 스트림 개체 간의 기본 차이점은 후자의 경우 파일 핸들이 아닌 IStream 인터페이스 포인터를 사용하여 스트림이 열린다는 것입니다.

이 인터페이스의 메서드는 개체의 데이터를 읽거나 쓸 수 있는 연속된 바이트 시퀀스로 제공합니다. 또한 트랜잭션 모드로 열려 있는 스트림에서 변경 내용을 커밋하고 되돌리는 메서드와 스트림의 바이트 범위에 대한 액세스를 제한하는 메서드도 있습니다.

스트림은 파일 시스템 리소스를 사용하지 않고 장시간 열려 있을 수 있습니다. IUnknown::Release 메서드는 파일의 close 함수와 유사합니다. 일단 릴리스되면 스트림 개체가 더 이상 유효하지 않으며 사용할 수 없습니다.

비동기 모니커의 클라이언트는 비동기 IMoniker::BindToStorage 작업을 구동하고 비동기 알림을 수신하기 위해 데이터 끌어오기 또는 데이터 푸시 모델 중에서 선택할 수 있습니다. 자세한 내용은 URL 모니커 를 참조하세요. 다음 표에서는 이러한 두 다운로드 모델에서 IBindStatusCallback::OnDataAvailable에서 반환된 비동기 ISequentialStream::Read 및 IStream::Seek 호출의 동작을 비교합니다.

IStream 메서드 호출 데이터 끌어오기 모델의 동작 데이터 푸시 모델의 동작
읽기 는 부분 데이터를 읽기 위해 호출됩니다(즉, 사용 가능한 모든 데이터가 아님). S_OK 반환합니다. 클라이언트는 IBindStatusCallback::OnDataAvailable 에서 반환하기 전에 사용 가능한 모든 데이터를 계속 읽어야 합니다. 그렇지 않으면 바인딩 작업이 차단됩니다. 즉, S_FALSE 또는 E_PENDING 반환될 때까지 읽습니다. S_OK 반환합니다. 이 시점에서 클라이언트가 IBindStatusCallback::OnDataAvailable 에서 반환되더라도 바인딩 작업이 계속되고 바인딩이 완료될 때까지 IBindStatusCallback::OnDataAvailable 이 반복적으로 호출됩니다.
읽기 가 호출되어 사용 가능한 모든 데이터를 읽습니다. 바인딩 작업이 완료되지 않은 경우 E_PENDING 반환하고, 더 많은 데이터를 사용할 수 있을 때 IBindStatusCallback::OnDataAvailable 이 다시 호출됩니다. 데이터 끌어오기 모델과 동일합니다.
읽기 가 호출되어 사용 가능한 모든 데이터를 읽고 바인딩 작업이 끝났습니다(파일 끝). S_FALSE 반환합니다. grfBSC 플래그가 BSCF_LASTDATANOTIFICATION 설정된 IBindStatusCallback::OnDataAvailable에 대한 후속 호출이 있습니다. 데이터 끌어오기 모델과 동일합니다.
Seek 가 호출됩니다. 검색 이 데이터 끌어오기 모델에서 작동하지 않음 Seek 는 데이터 푸시 모델에서 작동하지 않습니다.
 

이 항목에 대한 일반적인 내용은 비동기 모니커Data-Pull-Model과 데이터 푸시 모델을 참조하세요. 또한 COM의 메모리 관리 규칙에 대한 자세한 내용은 메모리 할당 관리를 참조하세요.

상속

IStream 인터페이스는 ISequentialStream 인터페이스에서 상속됩니다. IStream 에는 다음과 같은 유형의 멤버도 있습니다.

메서드

IStream 인터페이스에는 이러한 메서드가 있습니다.

 
IStream::Clone

Clone 메서드는 원래 스트림과 동일한 바이트를 참조하는 자체 검색 포인터를 사용하여 새 스트림 개체를 만듭니다.
IStream::Commit

Commit 메서드를 사용하면 트랜잭션 모드에서 열린 스트림 개체에 대한 모든 변경 내용이 부모 스토리지에 반영됩니다.
IStream::CopyTo

지정된 바이트 수를 스트림의 현재 검색 포인터에서 다른 스트림의 현재 검색 포인터 위치로 복사합니다.
IStream::LockRegion

LockRegion 메서드는 스트림에서 지정된 바이트 범위에 대한 액세스를 제한합니다.
IStream::Revert

Revert 메서드는 마지막 IStream::Commit 호출 이후 트랜잭션된 스트림에 적용된 모든 변경 내용을 삭제합니다. 직접 모드로 열리는 스트림과 IStream::Revert의 COM 복합 파일 구현을 사용하는 스트림에서는 이 메서드가 적용되지 않습니다.
IStream::Seek

검색 포인터를 새 위치로 변경합니다. 새 위치는 스트림의 시작, 스트림의 끝 또는 현재 검색 포인터를 기준으로 합니다.
IStream::SetSize

스트림 개체의 크기를 변경합니다.
IStream::Stat

Stat 메서드는 이 스트림에 대한 STATSTG 구조를 검색합니다.
IStream::UnlockRegion

UnlockRegion 메서드는 이전에 IStream::LockRegion으로 제한되었던 바이트 범위에 대한 액세스 제한을 제거합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000 Professional [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows 2000 Server [데스크톱 앱 | UWP 앱]
대상 플랫폼 Windows
헤더 objidl.h

추가 정보

ISequentialStream

IStream - 복합 파일 구현