[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [win-pv-devel] [PATCH v3] Add registry setting for removable capability of PDOs
From: Owen Smith <owen.smith-Sxgqhf6Nn4DQT0dZR+AlfA@xxxxxxxxxxxxxxxx> Setting "Removable" to 0 under the key HKLM/System/CurrentControlSet/services/XENBUS/Parameters/<PDO-Name> will disable the PDOs removable and surprise removable capability. Signed-off-by: Owen Smith <owen.smith@xxxxxxxxxx> Signed-off-by: Paul Durrant <paul.durrant@xxxxxxxxxx> --- msbuild.bat | 10 +++++++++- src/xenbus/pdo.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 59 insertions(+), 3 deletions(-) diff --git a/msbuild.bat b/msbuild.bat index 1b1fbc8..f3f10ac 100644 --- a/msbuild.bat +++ b/msbuild.bat @@ -1,7 +1,15 @@ call "%VS%\VC\vcvarsall.bat" x86 @echo on -msbuild.exe /m:1 /p:Configuration="%CONFIGURATION%" /p:Platform="%PLATFORM%" /t:"%TARGET%" %EXTRA% %FILE% + +cov-build --dir cov_dir msbuild.exe /m:1 /p:Configuration="%CONFIGURATION%" /p:Platform="%PLATFORM%" /t:"%TARGET%" %EXTRA% %FILE% + if errorlevel 1 goto error + +cov-analyze --dir cov_dir -j auto --aggressiveness-level high --security --concurrency --preview --all --rule --enable-fnptr --strip-path c:\git\xenbus + +cov-commit-defects --dir cov_dir --host dagu-4.uk.xensource.com --port 8080 --user windows --password coverity --stream %PLATFORM% + + exit 0 :error diff --git a/src/xenbus/pdo.c b/src/xenbus/pdo.c index ad0d4de..65f63e5 100644 --- a/src/xenbus/pdo.c +++ b/src/xenbus/pdo.c @@ -45,6 +45,7 @@ #include "bus.h" #include "driver.h" #include "thread.h" +#include "registry.h" #include "dbg_print.h" #include "assert.h" @@ -64,6 +65,8 @@ struct _XENBUS_PDO { BOOLEAN Missing; const CHAR *Reason; + BOOLEAN Removable; + PULONG Revision; ULONG Count; @@ -254,6 +257,45 @@ PdoGetName( return __PdoGetName(Pdo); } +static FORCEINLINE VOID +__PdoSetRemovable( + IN PXENBUS_PDO Pdo + ) +{ + HANDLE ParametersKey; + HANDLE Key; + ULONG Value; + NTSTATUS status; + + Value = 1; + + ParametersKey = DriverGetParametersKey(); + + status = RegistryOpenSubKey(ParametersKey, + __PdoGetName(Pdo), + KEY_READ, + &Key); + if (!NT_SUCCESS(status)) + goto done; + + (VOID) RegistryQueryDwordValue(Key, + "Removable", + &Value); + + RegistryCloseKey(Key); + +done: + Pdo->Removable = (Value != 0) ? TRUE : FALSE; +} + +static FORCEINLINE BOOLEAN +__PdoIsRemovable( + IN PXENBUS_PDO Pdo + ) +{ + return Pdo->Removable; +} + static NTSTATUS PdoAddRevision( IN PXENBUS_PDO Pdo, @@ -1119,15 +1161,16 @@ PdoQueryCapabilities( Capabilities->DeviceD2 = 0; Capabilities->LockSupported = 0; Capabilities->EjectSupported = 0; - Capabilities->Removable = 1; Capabilities->DockDevice = 0; Capabilities->UniqueID = 1; Capabilities->SilentInstall = 1; Capabilities->RawDeviceOK = 0; - Capabilities->SurpriseRemovalOK = 1; Capabilities->HardwareDisabled = 0; Capabilities->NoDisplayInUI = 0; + Capabilities->Removable = __PdoIsRemovable(Pdo) ? 1 : 0; + Capabilities->SurpriseRemovalOK = Capabilities->Removable; + Capabilities->Address = 0xffffffff; Capabilities->UINumber = 0xffffffff; @@ -2092,6 +2135,7 @@ PdoCreate( goto fail4; __PdoSetName(Pdo, Name); + __PdoSetRemovable(Pdo); status = PdoSetRevisions(Pdo); if (!NT_SUCCESS(status)) @@ -2132,6 +2176,8 @@ fail6: fail5: Error("fail5\n"); + Pdo->Removable = FALSE; + ThreadAlert(Pdo->DevicePowerThread); ThreadJoin(Pdo->DevicePowerThread); Pdo->DevicePowerThread = NULL; @@ -2196,6 +2242,8 @@ PdoDestroy( Pdo->Revision = NULL; Pdo->Count = 0; + Pdo->Removable = FALSE; + ThreadAlert(Pdo->DevicePowerThread); ThreadJoin(Pdo->DevicePowerThread); Pdo->DevicePowerThread = NULL; -- 2.1.1 _______________________________________________ win-pv-devel mailing list win-pv-devel@xxxxxxxxxxxxxxxxxxxx http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |