Condividi tramite


Protezione e rilascio della proprietà degli indirizzi virtuali

Il driver proxy deve proteggere la proprietà degli indirizzi virtuali dei buffer in modalità utente ogni volta che il provider di servizi SAN per il driver proxy memorizza nella cache tali buffer. Per altre informazioni sui buffer di memorizzazione nella cache, vedere Memorizzazione nella cache della memoria registrata. Il driver proxy protegge la proprietà di un buffer in modalità utente, in modo che il sistema operativo noti l'opzione Windows Sockets se il buffer viene rilasciato nuovamente al sistema operativo da un'applicazione. Per proteggere la proprietà di un buffer, il driver proxy deve chiamare la funzione MmSecureVirtualMemory . In questa chiamata, il driver proxy passa un puntatore all'indirizzo iniziale del buffer e alle dimensioni, in byte, del buffer.

Se i mapping virtuali-a-fisici per il buffer memorizzato nella cache vengono pianificati per la modifica, l'opzione viene notificata e chiama la funzione WSPMemoryRegistrationCacheCallback del provider di servizi SAN per rimuovere la registrazione del buffer dalla scheda di interfaccia di rete SAN e dal buffer dalla cache del provider di servizi SAN. Il driver proxy del provider di servizi SAN, a sua volta, deve chiamare la funzione MmUnsecureVirtualMemory per rilasciare la proprietà del buffer. In questa chiamata, il driver proxy passa l'handle al buffer restituito in precedenza dalla chiamata MmSecureVirtualMemory .

Nota Un driver che tenta di accedere a un buffer in modalità utente protetto tramite una chiamata a MmSecureVirtualMemory può potenzialmente ridurre il sistema operativo. Pertanto, quando il driver proxy accede a un buffer in modalità utente, deve usare anche il meccanismo try/except intorno al codice che accede al buffer. Per altre informazioni su try/except, vedere la documentazione di Visual C++.

Un provider di servizi SAN può inviare richieste di controllo I/O (IOCTL) al driver proxy per proteggere e rilasciare la proprietà di un buffer. Per altre informazioni, vedere Implementazione di IOCTLs per un provider di servizi SAN.