I'm writing a small MFC app and loading an icon handle like this in my executable upon launch: 

```
const HANDLE hIconLarge = ::LoadImage(AfxGetInstanceHandle()
   MAKEINTRESOURCE(IDI_EXAMPLE), IMAGE_ICON,
   ::GetSystemMetrics(SM_CXICON), ::GetSystemMetrics(SM_CYICON), 0);

```

I am retaining this same handle in another class in a DLL I created by simply assigning it like this:

```
m_hLargeWindowIcon = p_hLargeIconHandle; 

```

where `m_hLargeWindowIcon` is a private class `HANDLE` variable in a singleton that I call `IconManager`. I then later occasionally use this icon handle to set the large icon for pop-up windows that my DLL creates. 

It seems to be working fine, but I am concerned about the life cycle of the handle I am retaining. 

Is it safe to save a handle in this fashion (i.e. the handle will remain valid until the host process of my DLL is terminated) or can I run into issues where the handle may not be valid when I access it at a later point in time? Should I be using `DuplicateHandle` or something to that nature in this case?