IStorage::CreateStorage 메서드(objidl.h)
CreateStorage 메서드는 지정된 액세스 모드에서 지정된 이름으로 이 스토리지 개체 내에 중첩된 새 스토리지 개체를 만들고 엽니다.
구문
HRESULT CreateStorage(
[in] const OLECHAR *pwcsName,
[in] DWORD grfMode,
[in] DWORD reserved1,
[in] DWORD reserved2,
[out] IStorage **ppstg
);
매개 변수
[in] pwcsName
새로 만든 스토리지 개체의 이름을 포함하는 와이드 문자 null로 끝나는 유니코드 문자열에 대한 포인터입니다. 나중에 이름을 사용하여 스토리지 개체를 다시 열 수 있습니다. 이름은 문자열 종결자를 포함하지 않고 길이가 31자를 초과하면 안됩니다. 스트림/스토리지 이름의 첫 번째 문자로 사용되는 000~01f 문자는 OLE에서 사용하도록 예약되어 있습니다. 이는 구조적 스토리지 제한이 아닌 복합 파일 제한입니다.
[in] grfMode
새로 만든 스토리지 개체를 열 때 사용할 액세스 모드를 지정하는 값입니다. 가능한 값에 대한 자세한 내용과 설명은 STGM 상수를 참조하세요.
[in] reserved1
나중에 사용하도록 예약되어 있습니다. 0이어야 합니다.
[in] reserved2
나중에 사용하도록 예약되어 있습니다. 0이어야 합니다.
[out] ppstg
성공하면 새로 만든 스토리지 개체에 대한 IStorage 포인터의 위치에 대한 포인터입니다. 오류가 발생하면 이 매개 변수가 NULL 로 설정됩니다.
반환 값
이 메서드는 이러한 값 중 하나를 반환할 수 있습니다.
반환 코드 | 설명 | |
---|---|---|
S_OK | 스토리지 개체가 성공적으로 만들어졌습니다. | |
E_PENDING | 비동기 스토리지만 해당: 필요한 데이터의 일부 또는 전부를 현재 사용할 수 없습니다. | |
STG_E_ACCESSDENIED | 스토리지 개체를 만들 수 있는 권한이 부족합니다. | |
STG_E_FILEALREADYEXISTS | 스토리지 개체에 대해 지정된 이름이 스토리지 개체에 이미 있으며 grfMode 매개 변수에는 플래그 STGM_FAILIFTHERE 포함되어 있습니다. | |
STG_E_INSUFFICIENTMEMORY | 메모리 부족으로 인해 스토리지 개체가 만들어지지 않았습니다. | |
STG_E_INVALIDFLAG | grfMode< 매개 변수에 지정된 값이 유효한 STGM 상수 값이 아닙니다. | grfMode 매개 변수에 지정된 값이 잘못되었습니다. |
STG_E_INVALIDFUNCTION | grfMode 매개 변수의 지정된 플래그 조합은 지원되지 않습니다. | |
STG_E_INVALIDNAME | pwcsName에 유효한 값이 아닙니다. | |
STG_E_INVALIDPOINTER | 스토리지 개체에 대해 지정된 포인터가 잘못되었습니다. | |
STG_E_INVALIDPARAMETER | 매개 변수 중 하나가 잘못되었습니다. | |
STG_E_REVERTED | 스토리지 개체는 트랜잭션 트리에서 위의 되돌리기 작업에 의해 무효화되었습니다. | |
STG_E_TOOMANYOPENFILES | 열려 있는 파일이 너무 많기 때문에 스토리지 개체가 만들어지지 않았습니다. | |
STG_S_CONVERTED | 지정된 이름의 기존 스트림이 CONTENTS라는 단일 스트림을 포함하는 새 스토리지 개체로 대체되었습니다. 새 스토리지 개체가 추가됩니다. |
설명
pwcsName 매개 변수에 지정된 이름의 스토리지가 부모 스토리지 개체 내에 이미 있고 grfMode 매개 변수에 STGM_CREATE 플래그가 포함된 경우 기존 스토리지가 새 스토리지로 대체됩니다. grfMode 매개 변수에 STGM_CONVERT 플래그가 포함된 경우 기존 요소는 CONTENTS라는 스트림 개체로 변환되고 CONTENTS 스트림 개체를 포함하는 새 스토리지 개체가 만들어집니다. 이전 요소의 소멸과 새 스토리지 개체 생성은 모두 부모 스토리지 개체의 트랜잭션 모드가 적용됩니다. STGM_CREATE 사용하는 경우 STGM_CONVERT 사용할 수 없습니다.
IStorage::CreateStorage 메서드의 COM 제공 복합 파일 구현은 다음 동작을 지원하지 않습니다.
- 비root 스토리지에 대한 STGM_PRIORITY 플래그입니다.
- 동일한 부모 스토리지에서 동일한 스토리지 개체를 두 번 이상 여는 경우 STGM_SHARE_EXCLUSIVE 플래그를 지정해야 합니다.
- STGM_DELETEONRELEASE 플래그입니다. 이 플래그를 지정하면 함수는 STG_E_INVALIDFLAG 반환합니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 2000 Professional [데스크톱 앱 | UWP 앱] |
지원되는 최소 서버 | Windows 2000 Server [데스크톱 앱 | UWP 앱] |
대상 플랫폼 | Windows |
헤더 | objidl.h |
라이브러리 | Uuid.lib |
DLL | Ole32.dll |