Update of /cvsroot/pywin32/pywin32/win32/src
In directory sc8-pr-cvs1:/tmp/cvs-serv2578/win32/src
Modified Files:
win32security.i
Log Message:
Check if CryptEnumProviders exists (not supported on NT)
Index: win32security.i
===================================================================
RCS file: /cvsroot/pywin32/pywin32/win32/src/win32security.i,v
retrieving revision 1.13
retrieving revision 1.14
diff -C2 -d -r1.13 -r1.14
*** win32security.i 24 Oct 2003 05:32:33 -0000 1.13
--- win32security.i 23 Nov 2003 16:42:18 -0000 1.14
***************
*** 256,259 ****
--- 256,261 ----
static long (WINAPI *lsarpcn)(POLICY_NOTIFICATION_INFORMATION_CLASS,HANDLE) = NULL;
static long (WINAPI *lsaupcn)(POLICY_NOTIFICATION_INFORMATION_CLASS,HANDLE) = NULL;
+ static BOOL (WINAPI *cryptenumproviders)(DWORD, DWORD *, DWORD, DWORD *, LPTSTR, DWORD *) = NULL;
+
BOOL CheckIfSupported(char *funcname, WCHAR *dllname, FARPROC *fp)
***************
*** 358,362 ****
if (CheckIfSupported("LsaUnregisterPolicyChangeNotification",_T("Secur32.dll"),&fp))
lsaupcn=(NTSTATUS (NTAPI *)(POLICY_NOTIFICATION_INFORMATION_CLASS,HANDLE))(fp);
!
%}
--- 360,365 ----
if (CheckIfSupported("LsaUnregisterPolicyChangeNotification",_T("Secur32.dll"),&fp))
lsaupcn=(NTSTATUS (NTAPI *)(POLICY_NOTIFICATION_INFORMATION_CLASS,HANDLE))(fp);
! if (CheckIfSupported("CryptEnumProvidersW", _T("Advapi32.dll"),&fp))
! cryptenumproviders=(BOOL (WINAPI *)(DWORD, DWORD *, DWORD, DWORD *, LPTSTR, DWORD *))(fp);
%}
***************
*** 2088,2091 ****
--- 2091,2096 ----
static PyObject *PyCryptEnumProviders(PyObject *self, PyObject *args)
{
+ if (cryptenumproviders==NULL)
+ return PyErr_Format(PyExc_NotImplementedError,"CryptEnumProviders not supported by this version of Windows");
if (!PyArg_ParseTuple(args, ":CryptEnumProviders"))
return NULL;
***************
*** 2099,2103 ****
cbProvName=0;
pszProvName=NULL;
! succeeded = CryptEnumProviders(dwIndex, NULL, dwFlags, &dwProvType, NULL, &cbProvName);
if (!succeeded)
break;
--- 2104,2108 ----
cbProvName=0;
pszProvName=NULL;
! succeeded = (*cryptenumproviders)(dwIndex, NULL, dwFlags, &dwProvType, NULL, &cbProvName);
if (!succeeded)
break;
***************
*** 2111,2115 ****
return NULL;
}
! succeeded = CryptEnumProviders(dwIndex, NULL, dwFlags, &dwProvType, pszProvName, &cbProvName);
if (!succeeded){
free(pszProvName);
--- 2116,2120 ----
return NULL;
}
! succeeded = (*cryptenumproviders)(dwIndex, NULL, dwFlags, &dwProvType, pszProvName, &cbProvName);
if (!succeeded){
free(pszProvName);
|