Guido van Rossum | 6dbd190 | 1996-08-21 15:03:37 +0000 | [diff] [blame] | 1 | /* |
| 2 | |
| 3 | Entry point for the Windows NT DLL. |
| 4 | |
| 5 | About the only reason for having this, is so initall() can automatically |
Antoine Pitrou | f95a1b3 | 2010-05-09 15:52:27 +0000 | [diff] [blame] | 6 | be called, removing that burden (and possible source of frustration if |
Guido van Rossum | 6dbd190 | 1996-08-21 15:03:37 +0000 | [diff] [blame] | 7 | forgotten) from the programmer. |
| 8 | |
| 9 | */ |
Guido van Rossum | 6dbd190 | 1996-08-21 15:03:37 +0000 | [diff] [blame] | 10 | |
Guido van Rossum | a1ebdbd | 1997-05-05 22:18:50 +0000 | [diff] [blame] | 11 | #include "Python.h" |
Guido van Rossum | e7ba495 | 2007-06-06 23:52:48 +0000 | [diff] [blame] | 12 | #include "windows.h" |
Guido van Rossum | 6dbd190 | 1996-08-21 15:03:37 +0000 | [diff] [blame] | 13 | |
Christian Heimes | d59c64c | 2007-11-30 19:27:20 +0000 | [diff] [blame] | 14 | #ifdef Py_ENABLE_SHARED |
Steve Dower | 2587952 | 2015-01-15 09:10:16 -0800 | [diff] [blame] | 15 | #ifdef MS_DLL_ID |
| 16 | // The string is available at build, so fill the buffer immediately |
| 17 | char dllVersionBuffer[16] = MS_DLL_ID; |
| 18 | #else |
Guido van Rossum | ec68092 | 1997-09-29 23:37:12 +0000 | [diff] [blame] | 19 | char dllVersionBuffer[16] = ""; // a private buffer |
Steve Dower | 2587952 | 2015-01-15 09:10:16 -0800 | [diff] [blame] | 20 | #endif |
Guido van Rossum | ec68092 | 1997-09-29 23:37:12 +0000 | [diff] [blame] | 21 | |
| 22 | // Python Globals |
Guido van Rossum | 6dbd190 | 1996-08-21 15:03:37 +0000 | [diff] [blame] | 23 | HMODULE PyWin_DLLhModule = NULL; |
Guido van Rossum | ec68092 | 1997-09-29 23:37:12 +0000 | [diff] [blame] | 24 | const char *PyWin_DLLVersionString = dllVersionBuffer; |
| 25 | |
Antoine Pitrou | f95a1b3 | 2010-05-09 15:52:27 +0000 | [diff] [blame] | 26 | BOOL WINAPI DllMain (HANDLE hInst, |
| 27 | ULONG ul_reason_for_call, |
| 28 | LPVOID lpReserved) |
Guido van Rossum | 6dbd190 | 1996-08-21 15:03:37 +0000 | [diff] [blame] | 29 | { |
Antoine Pitrou | f95a1b3 | 2010-05-09 15:52:27 +0000 | [diff] [blame] | 30 | switch (ul_reason_for_call) |
| 31 | { |
| 32 | case DLL_PROCESS_ATTACH: |
| 33 | PyWin_DLLhModule = hInst; |
Steve Dower | 2587952 | 2015-01-15 09:10:16 -0800 | [diff] [blame] | 34 | #ifndef MS_DLL_ID |
| 35 | // If we have MS_DLL_ID, we don't need to load the string. |
Antoine Pitrou | f95a1b3 | 2010-05-09 15:52:27 +0000 | [diff] [blame] | 36 | // 1000 is a magic number I picked out of the air. Could do with a #define, I spose... |
| 37 | LoadString(hInst, 1000, dllVersionBuffer, sizeof(dllVersionBuffer)); |
Steve Dower | 2587952 | 2015-01-15 09:10:16 -0800 | [diff] [blame] | 38 | #endif |
Antoine Pitrou | f95a1b3 | 2010-05-09 15:52:27 +0000 | [diff] [blame] | 39 | break; |
Mark Hammond | 9844a1f | 2009-01-27 23:46:57 +0000 | [diff] [blame] | 40 | |
Antoine Pitrou | f95a1b3 | 2010-05-09 15:52:27 +0000 | [diff] [blame] | 41 | case DLL_PROCESS_DETACH: |
Antoine Pitrou | f95a1b3 | 2010-05-09 15:52:27 +0000 | [diff] [blame] | 42 | break; |
| 43 | } |
| 44 | return TRUE; |
Guido van Rossum | 6dbd190 | 1996-08-21 15:03:37 +0000 | [diff] [blame] | 45 | } |
Christian Heimes | d59c64c | 2007-11-30 19:27:20 +0000 | [diff] [blame] | 46 | |
| 47 | #endif /* Py_ENABLE_SHARED */ |