Por que usar o DllImport Attribute ao invés de adicionar uma referência?

Eu já vi alguns exemplos como este:

[DllImport("user32.dll")]
static extern bool TranslateMessage([In] ref Message lpMsg);

[DllImport("user32.dll")]
static extern IntPtr DispatchMessage([In] ref Message lpmsg);

Mas, o que eu não entendo é por que alguém faria isso ao invés de apenas referenciar a DLL como faz com outras bibliotecas? O MSDN declara: "O atributo DllImport é muito útil ao reutilizar o código não gerenciado existente em um aplicativo gerenciado. Por exemplo, seu aplicativo gerenciado pode precisar fazer chamadas para a API WIN32 não gerenciada". Mas, é dizer que não é útil fazer referência a uma dll não gerenciada ou impossível de outra maneira?

questionAnswers(4)

yourAnswerToTheQuestion