문제

누구 든지이 작업을 수행 한 사람이 있습니까? 나는 ipropertystore를 위해 관리되는 래퍼 클래스를 만들려고 시도했지만 propvariant (managedtype.struct)에 대한 포인터를 사용하는 방법 (예 : ipropertystore :: getValue)에 대한 AccessViolationExceptions를 받고 있습니다 (예시적인 버전에서 매개 변수로 렌더링). com과 interop은 부적절합니다 --- 문제가 내 propvariant struct 선언에 있는지 확실하지 않습니다 (현재 structlayout을 사용하는 것만으로도 Sequentiental을 선언하고 바이트 시퀀스를 선언하고 바이트를 수동으로 조작하여 다양한 유형의 값을 얻습니다. 노동 조합 등), COM은 어떤 프로세스를 소유하고 있는지 또는 다른 것을 발행합니다. 나는 Unions에 structlayout.explicit을 사용하는 것과 같은 다양한 프로파일 트의 다양한 버전을 시도했지만 아무것도 작동하지 않았습니다. ipropertystore :: getat ---로 Propertykeys를 검색하는 것은 PropertyKey에 대한 포인터를 가져 와서 내 자신의 structlayout의 매개 변수를 가지고있는 것으로 선언됩니다.

도움이 되었습니까?

해결책

체크 아웃해야합니다 http://code.msdn.microsoft.com/windowsapicodepack . Windows 속성 시스템과 다른 많은 Windows 쉘 기능을 소비하는 것을 지원합니다. 나는 그것이 당신이 찾고있는 것 같아요.

다른 팁

글쎄, 여기 버전이 있습니다 MS.Internal.Interop (지식의 트로브) :

[StructLayout(LayoutKind.Sequential), FriendAccessAllowed]
internal struct PROPVARIANT
{
    internal VARTYPE vt;
    internal ushort wReserved1;
    internal ushort wReserved2;
    internal ushort wReserved3;
    internal PropVariantUnion union;
}

[FriendAccessAllowed]
internal enum VARTYPE : short
{
    VT_BSTR = 8,
    VT_FILETIME = 0x40,
    VT_LPSTR = 30,
    // etc...
}


[StructLayout(LayoutKind.Explicit), FriendAccessAllowed]
internal struct PropVariantUnion
{
    [FieldOffset(0)]
    internal BLOB blob;
    [FieldOffset(0)]
    internal short boolVal;
    // etc... see MS.Internal.Interop for full definition
}

이러한 정의는 구조가 최소한 올바른지 확인하는 데 도움이됩니다. 다른 문제에 관해서는 답이 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top