oh, I think I find the bug in my code! I write: [StructLayout(LayoutKind.Sequential, Pack = 1)] but I must write: [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode, Pack = 1)] instead. I use unicode charset for my all methode definitions. But I wonder why this makes a problem! we have two types of pidl!? on for ansi one for unicode!? why? in pidl address we have string!??