함수의 원형은 이렇게 되어있는 상황입니다.
LPCTSTR GetImageFileName(DevMode* pDevMode);
C# 에서는 DllImport를 사용할 시에 반환 값을 string이 아닌 IntPtr로 선언해야 오류가 발생하지 않았습니다.!
(오류가 발생하는 상황에서는 try,catch로 감싸도 프로세스가 종료 되버리네요..)
[DllImport("Component.dll", EntryPoint = "GetImageFileName", CharSet = CharSet.Unicode)]
private static extern IntPtr GetImageFileName(IntPtr lpDevmode);
public string GetImageFileName(string printerName)
{
IntPtr intPtr = GetImageFileName(lpDevMode);
string imageFileName = Marshal.PtrToStringAuto(intPtr);
}
Marshal.PtrToStringAuto(IntPtr); 로 string을 획득 하였습니다.