in

UgiMobile.org

Il primo User Group Italiano dedicato a Windows Mobile

Mirco Vanini

Embedded life tips

September 2008 - Posts

  • AddHeader - ISAPI

    Durante lo sviluppo di una ISAPI filter mi è capitata la necessità di creare una variabile server IIS durante la gestione della notifica SF_NOTIFY_AUTHENTICATION.

    Peccato che in questa notifica il parametro pvNotification passato da IIS sia di tipo PHTTP_FILTER_AUTHENT e non vi sia il modo di recuperare la struttura di tipo PHTTP_FILTER_PREPROC_HEADERS che contiene il metodo AddHeader.

    Dopo un po' di tentativi ho percorso questa strada:

     

    1. Definisco i seguenti typedef e define

       1: #define MYISAPI_HEADER       "MYISAPI-HEADER:"
       2: #define HTTP_MYISAPI_HEADER    "HTTP_MYISAPI_HEADER"
       3:  
       4: typedef BOOL (WINAPI * PAddHeader) 
       5:               (
       6:                 struct _HTTP_FILTER_CONTEXT * pfc,
       7:                 LPSTR                         lpszName,
       8:                 LPSTR                         lpszValue
       9:               );

    2. Nella notifica SF_NOTIFY_PREPROC_HEADERS creo una variabile server che contiene l'indirizzo del metodo AddHeader come nel codice seguente

       1: TCHAR szTmp[256];
       2: sprintf_s(szTmp, sizeof(szTmp), "%08lx", ((PHTTP_FILTER_PREPROC_HEADERS)pvNotification)->AddHeader);
       3: if(((PHTTP_FILTER_PREPROC_HEADERS)pvNotification)->HttpStatus == 0)
       4: {
       5:     TCHAR szValue[256];
       6:     DWORD dwValue = sizeof(szValue);
       7:  
       8:     *szValue = 0;
       9:     ((PHTTP_FILTER_PREPROC_HEADERS)pvNotification)->GetHeader(pfc, MYISAPI_HEADER, szValue, &dwValue);
      10:  
      11:     if(*szValue == 0)
      12:         ((PHTTP_FILTER_PREPROC_HEADERS)pvNotification)->AddHeader(pfc, MYISAPI_HEADER, szTmp);
      13: }
      14: return(SF_STATUS_REQ_NEXT_NOTIFICATION);

    3. Nella notifica SF_NOTIFY_AUTHENTICATION utilizzo la variabile server creata precedentemente nella notifica SF_NOTIFY_PREPROC_HEADERS, eseguo il cast su il pointer a funzione definito nel typedef e la richiamo per impostare una nuova variabile server

       1: TCHAR szValue[256];
       2: DWORD dwValue = sizeof(szValue);
       3:  
       4: *szValue = 0;
       5: pfc->GetServerVariable(pfc, HTTP_MYISAPI_HEADER, szValue, &dwValue);
       6: if(*szValue != 0)
       7: {
       8:     try
       9:     {
      10:         PAddHeader pHeader = (PAddHeader)strtoul(szTmp, NULL, 16);
      11:         if(pHeader)
      12:            (pHeader)(pfc, MYISAPI_USER_ID_LDAP, W2A(pszUidLdap));    
      13:     }
      14:     catch(CException *e)
      15:     {
      16:         DumpException(e)
      17:         e->Delete();
      18:     }
      19: }

     

    Funziona :)

  • Expert .Net Micro Framework

    Dopo aver acquistato il kit di sviluppo GHI Electronics - Embedded Master Development System ho pensato bene di acquistare un libro dedicato al .NET Micro Framework. Devo dire che sul mercato non c'è tantissimo e alla fine ho deciso di acquistare il libro di Jens Kühner - Expert .Net Micro Framework. Devo dire la verità, sin dall'inizio mi è piaciuto.

    Essendo un amante dei libri cartacei ricevere un libro con copertina rigida, rilegato in modo che non si sfaldi dopo le seconda lettura e stampato su della carta di qualità discreta fa solo che piacere. Oltre all'impressione "estetica" e "fisica" devo dire che è un buon libro, strutturato bene, che prende per mano il lettore e lo porta ad esaminare le varie parti del .Net Micro FW.

    Si parte dalla genesi del Micro FW, ne descrive le varie parti costituenti e fà una rapida carellata sui kit di sviluppo attualmente disponibili. Questa è solo l'introduzione del libro, poi si passa alla "sostanza". Descrive in modo accurato la gestione delle varie porte hardware, il threading disponibile, la crittografia, la comunicazione via socket, per poi arrivare al DPWS (Device Profile for Web Service). Devo dire che forse è il capitolo che mi ha entusiasmato di più, anche se per poterlo utilizzare si deve scrivere un bel pò di codice.

    Si arriva poi alla gestione della localizzazione e sopratutto alla parte di gestione grafica e di user interface. Anche questo capito è degno di nota sopratutto per i semplici ma efficaci esempi riportati.

    Ultima parte ma non per questo meno importante è la gestione dell'emulazione hardware e dei relativi componenti. Ben scritta e documentata sopratutto negli esempi di implementazione di componenti per l'emulazione hardware.

    Che dire ? Sicuramente è un libro ben fatto ed indispensabile per chi vuole partire ed approffondire lo sviluppo con .Net Micro FW.

    Buona lettura a tutti

     

    Technorati Tag: ,
Powered by Community Server (Commercial Edition), by Telligent Systems