2013-06-13 3 views
0

SHGetDesktopFolder()를 사용하여 PIDL을 얻은 다음 IShellFolder를 사용하여 내용을 보냈습니다.쉘 API를 사용하여 쉘 네임 스페이스 확장으로 파일을 읽고 쓰십시오.

파일 시스템 위치를 참조하는 특정 PIDL이 있습니다. BindToStorage 및 IStorage를 사용하여 .OpenStream() 및 .Write() 파일을 사용할 수 있습니다.

재미있는 것들이 파일 시스템에 저장되어 있으면 좋지만, "Shell Namespace Extensions"에는 더 흥미로운 것들이 있습니다.

특히 Windows Mobile Device Center를 사용하여 Windows 7 컴퓨터에 연결되는 Pocket PC 2002 장치 (구체적으로 Symbol PDT8146)가 있습니다. 이 응용 프로그램은 탐색기에서 파일을 읽고 쓸 수있는 쉘 네임 스페이스 폴더를 만듭니다.

내가 할 수없는 일은 명령 줄 또는 win32 API를 사용하여 파일을 작성하는 것입니다.

위에서 설명한 전략에 따라 장치를 참조하는 PIDL 및 IShellFolder 인스턴스를 얻을 수 있으며 파일을 나열 할 수 있습니다. 그러나 IStorage에 액세스하려고하면 IShellFolder.BindToStorage()가 '해당 인터페이스가 지원되지 않습니다.'와 함께 실패합니다.

이 고집적 장치에서 파일을 읽고 쓰려면 조사해야하는 다른 셸 인터페이스가 있습니까?

답변

0

IShellFolder.BindToObject을 시도해보십시오

IStream *stream; 
if (FAILED(shellfolder->BindToObject (pidl, NULL, IID_IStream, &stream))) 
    return E_FAIL; 

하지만이뿐만 아니라 쓰기 파일을 작동 있는지 확실하지 않습니다.

+0

아직 테스트 할 수 없지만 기존 파일 I/O에서 작동하더라도 장치에 새 파일을 쓰려면 어떻게해야합니까? –

+0

그 중 하나에 대해서는 확실하지 않습니다. 필자는 쓰기 권한이 필요하지 않았습니다. – ssbssa

관련 문제