/[openpgpmdrv]/trunk/OpenPGPminidriver/CardPublicDataOperation.c
ViewVC logotype

Diff of /trunk/OpenPGPminidriver/CardPublicDataOperation.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1 by vletoux, Tue Feb 23 19:18:59 2010 UTC revision 8 by vletoux, Thu Mar 11 20:32:26 2010 UTC
# Line 79  DWORD WINAPI CardReadFile( Line 79  DWORD WINAPI CardReadFile(
79                          dwReturn  = SCARD_E_INVALID_PARAMETER;                          dwReturn  = SCARD_E_INVALID_PARAMETER;
80                          __leave;                          __leave;
81                  }                  }
82                    if ( *pszFileName == 0 )
83                    {
84                            Trace(WINEVENT_LEVEL_ERROR, L"pszFileName empty");
85                            dwReturn  = SCARD_E_INVALID_PARAMETER;
86                            __leave;
87                    }
88                  if (ppbData == NULL)                  if (ppbData == NULL)
89                  {                  {
90                          Trace(WINEVENT_LEVEL_ERROR, L"ppbData == NULL");                          Trace(WINEVENT_LEVEL_ERROR, L"ppbData == NULL");
# Line 102  DWORD WINAPI CardReadFile( Line 108  DWORD WINAPI CardReadFile(
108                  {                  {
109                          __leave;                          __leave;
110                  }                  }
111                  dwReturn = SCardReadFile(pCardData, pszDirectoryName, pszFileName, ppbData, pcbData);                  dwReturn = OCardReadFile(pCardData, pszDirectoryName, pszFileName, ppbData, pcbData);
112          }          }
113          __finally          __finally
114          {          {
# Line 123  DWORD WINAPI CardCreateFile( Line 129  DWORD WINAPI CardCreateFile(
129  )  )
130  {  {
131          DWORD dwReturn = 0;              DWORD dwReturn = 0;    
132                    POPENPGP_CONTEXT pContext = NULL;
133          Trace(WINEVENT_LEVEL_VERBOSE, L"Enter");          Trace(WINEVENT_LEVEL_VERBOSE, L"Enter");
134          __try          __try
135          {          {
# Line 144  DWORD WINAPI CardCreateFile( Line 150  DWORD WINAPI CardCreateFile(
150                  {                  {
151                          __leave;                          __leave;
152                  }                  }
153                  dwReturn = SCardCreateFile(pCardData, pszDirectoryName, pszFileName);                  pContext = (POPENPGP_CONTEXT) pCardData->pvVendorSpecific;
154                    if (pContext->fIsReadOnly)
155                    {
156                            dwReturn = SCARD_E_UNSUPPORTED_FEATURE;
157                            Trace(WINEVENT_LEVEL_ERROR, L"Readonly card");
158                            __leave;
159                    }
160                    dwReturn = OCardCreateFile(pCardData, pszDirectoryName, pszFileName);
161          }          }
162          __finally          __finally
163          {          {
# Line 162  DWORD WINAPI CardGetFileInfo( Line 175  DWORD WINAPI CardGetFileInfo(
175      __inout PCARD_FILE_INFO  pCardFileInfo      __inout PCARD_FILE_INFO  pCardFileInfo
176  )  )
177  {  {
178          DWORD dwReturn = 0;              DWORD dwReturn = 0, dwVersion;  
179                    
180          Trace(WINEVENT_LEVEL_VERBOSE, L"Enter");          Trace(WINEVENT_LEVEL_VERBOSE, L"Enter");
181          __try          __try
# Line 185  DWORD WINAPI CardGetFileInfo( Line 198  DWORD WINAPI CardGetFileInfo(
198                          dwReturn  = SCARD_E_INVALID_PARAMETER;                          dwReturn  = SCARD_E_INVALID_PARAMETER;
199                          __leave;                          __leave;
200                  }                  }
201                    dwVersion = (pCardFileInfo->dwVersion == 0) ? 1 : pCardFileInfo->dwVersion;
202                    if ( dwVersion != CARD_CAPABILITIES_CURRENT_VERSION )
203                    {
204                            Trace(WINEVENT_LEVEL_ERROR, L"dwVersion %d", dwVersion);
205                            dwReturn  = ERROR_REVISION_MISMATCH;
206                            __leave;
207                    }
208                  dwReturn = CheckContext(pCardData);                  dwReturn = CheckContext(pCardData);
209                  if (dwReturn)                  if (dwReturn)
210                  {                  {
211                          __leave;                          __leave;
212                  }                  }
213                  dwReturn = SCardGetFileInfo(pCardData, pszDirectoryName, pszFileName, pCardFileInfo);                  dwReturn = OCardGetFileInfo(pCardData, pszDirectoryName, pszFileName, pCardFileInfo);
214    
215          }          }
216          __finally          __finally
# Line 214  DWORD WINAPI CardWriteFile( Line 234  DWORD WINAPI CardWriteFile(
234  )  )
235  {  {
236          DWORD dwReturn = 0;              DWORD dwReturn = 0;    
237                    POPENPGP_CONTEXT pContext = NULL;
238          Trace(WINEVENT_LEVEL_VERBOSE, L"Enter");          Trace(WINEVENT_LEVEL_VERBOSE, L"Enter");
239          __try          __try
240          {          {
# Line 253  DWORD WINAPI CardWriteFile( Line 273  DWORD WINAPI CardWriteFile(
273                  {                  {
274                          __leave;                          __leave;
275                  }                  }
276                  dwReturn = SCardWriteFile(pCardData, pszDirectoryName, pszFileName, pbData, cbData);                  pContext = (POPENPGP_CONTEXT) pCardData->pvVendorSpecific;
277                    if (pContext->fIsReadOnly)
278                    {
279                            dwReturn = SCARD_E_UNSUPPORTED_FEATURE;
280                            Trace(WINEVENT_LEVEL_ERROR, L"Readonly card");
281                            __leave;
282                    }
283                    dwReturn = OCardWriteFile(pCardData, pszDirectoryName, pszFileName, pbData, cbData);
284          }          }
285          __finally          __finally
286          {          {
# Line 273  DWORD WINAPI CardDeleteFile( Line 300  DWORD WINAPI CardDeleteFile(
300  )  )
301  {  {
302          DWORD dwReturn = 0;              DWORD dwReturn = 0;    
303                    POPENPGP_CONTEXT pContext = NULL;
304          PBYTE pbData = NULL;          PBYTE pbData = NULL;
305          DWORD dwSize = 0;          DWORD dwSize = 0;
306          Trace(WINEVENT_LEVEL_VERBOSE, L"Enter");          Trace(WINEVENT_LEVEL_VERBOSE, L"Enter");
# Line 297  DWORD WINAPI CardDeleteFile( Line 324  DWORD WINAPI CardDeleteFile(
324                          dwReturn  = SCARD_E_INVALID_PARAMETER;                          dwReturn  = SCARD_E_INVALID_PARAMETER;
325                          __leave;                          __leave;
326                  }                  }
                 // try to read the file to see if it exists and return the right error code  
327                  dwReturn = CheckContext(pCardData);                  dwReturn = CheckContext(pCardData);
328                  if (dwReturn)                  if (dwReturn)
329                  {                  {
330                          __leave;                          __leave;
331                  }                  }
332                  dwReturn = SCardDeleteFile(pCardData, pszDirectoryName, pszFileName);                  pContext = (POPENPGP_CONTEXT) pCardData->pvVendorSpecific;
333                    if (pContext->fIsReadOnly)
334                    {
335                            dwReturn = SCARD_E_UNSUPPORTED_FEATURE;
336                            Trace(WINEVENT_LEVEL_ERROR, L"Readonly card");
337                            __leave;
338                    }
339                    dwReturn = OCardDeleteFile(pCardData, pszDirectoryName, pszFileName);
340          }          }
341          __finally          __finally
342          {          {
# Line 325  DWORD WINAPI CardEnumFiles( Line 358  DWORD WINAPI CardEnumFiles(
358  {  {
359          DWORD dwReturn = 0;              DWORD dwReturn = 0;    
360          PSTR szFiles = NULL;          PSTR szFiles = NULL;
           
361          Trace(WINEVENT_LEVEL_VERBOSE, L"Enter");          Trace(WINEVENT_LEVEL_VERBOSE, L"Enter");
362          __try          __try
363          {          {
# Line 341  DWORD WINAPI CardEnumFiles( Line 373  DWORD WINAPI CardEnumFiles(
373                          dwReturn  = SCARD_E_INVALID_PARAMETER;                          dwReturn  = SCARD_E_INVALID_PARAMETER;
374                          __leave;                          __leave;
375                  }                  }
376                  if ( pmszFileNames == NULL )                  if ( pdwcbFileName == NULL )
377                  {                  {
378                          Trace(WINEVENT_LEVEL_ERROR, L"pmszFileNames == NULL");                          Trace(WINEVENT_LEVEL_ERROR, L"pmszFileNames == NULL");
379                          dwReturn  = SCARD_E_INVALID_PARAMETER;                          dwReturn  = SCARD_E_INVALID_PARAMETER;
# Line 368  DWORD WINAPI CardEnumFiles( Line 400  DWORD WINAPI CardEnumFiles(
400                  {                  {
401                          __leave;                          __leave;
402                  }                  }
403                  dwReturn = SCardEnumFile(pCardData, pszDirectoryName, pmszFileNames, pdwcbFileName);                  dwReturn = OCardEnumFile(pCardData, pszDirectoryName, pmszFileNames, pdwcbFileName);
404          }          }
405          __finally          __finally
406          {          {
# Line 384  DWORD WINAPI CardQueryFreeSpace( Line 416  DWORD WINAPI CardQueryFreeSpace(
416      __inout PCARD_FREE_SPACE_INFO  pCardFreeSpaceInfo      __inout PCARD_FREE_SPACE_INFO  pCardFreeSpaceInfo
417  )  )
418  {  {
419          DWORD dwReturn = 0;              DWORD dwReturn = 0, dwVersion;  
420          Trace(WINEVENT_LEVEL_VERBOSE, L"Enter");          Trace(WINEVENT_LEVEL_VERBOSE, L"Enter");
421          __try          __try
422          {          {
# Line 400  DWORD WINAPI CardQueryFreeSpace( Line 432  DWORD WINAPI CardQueryFreeSpace(
432                          dwReturn  = SCARD_E_INVALID_PARAMETER;                          dwReturn  = SCARD_E_INVALID_PARAMETER;
433                          __leave;                          __leave;
434                  }                  }
435                    dwVersion = (pCardFreeSpaceInfo->dwVersion == 0) ? 1 : pCardFreeSpaceInfo->dwVersion;
436                    if ( dwVersion != CARD_FREE_SPACE_INFO_CURRENT_VERSION )
437                    {
438                            Trace(WINEVENT_LEVEL_ERROR, L"dwVersion %d", dwVersion);
439                            dwReturn  = ERROR_REVISION_MISMATCH;
440                            __leave;
441                    }
442                  if (dwFlags)                  if (dwFlags)
443                  {                  {
444                          Trace(WINEVENT_LEVEL_ERROR, L"dwFlags == 0");                          Trace(WINEVENT_LEVEL_ERROR, L"dwFlags == 0");

Legend:
Removed from v.1  
changed lines
  Added in v.8

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26