AFSLibraryInitCB *pLibInitCB = (AFSLibraryInitCB *)Irp->AssociatedIrp.SystemBuffer;
+ if ( Irp->RequestorMode != KernelMode)
+ {
+
+ ntStatus = STATUS_ACCESS_DENIED;
+
+ break;
+ }
+
if( pIrpSp->Parameters.DeviceIoControl.InputBufferLength < sizeof( AFSLibraryInitCB))
{
if( !NT_SUCCESS( ntStatus))
{
- AFSDbgLogMsg( AFS_SUBSYSTEM_LOAD_LIBRARY | AFS_SUBSYSTEM_INIT_PROCESSING,
+ AFSDbgTrace(( AFS_SUBSYSTEM_LOAD_LIBRARY | AFS_SUBSYSTEM_INIT_PROCESSING,
AFS_TRACE_LEVEL_ERROR,
"AFSDevControl AFSInitializeLibrary failure %08lX\n",
- ntStatus);
+ ntStatus));
+
+ break;
+ }
+
+ //
+ // Initialize the worker pool.
+ //
+
+ ntStatus = AFSInitializeWorkerPool();
+
+ if( !NT_SUCCESS( ntStatus))
+ {
+
+ AFSDbgTrace(( AFS_SUBSYSTEM_LOAD_LIBRARY | AFS_SUBSYSTEM_INIT_PROCESSING,
+ AFS_TRACE_LEVEL_ERROR,
+ "AFSDevControl AFSInitializeWorkerPool failure %08lX\n",
+ ntStatus));
break;
}
if( !NT_SUCCESS( ntStatus))
{
- AFSDbgLogMsg( AFS_SUBSYSTEM_LOAD_LIBRARY | AFS_SUBSYSTEM_INIT_PROCESSING,
+ AFSDbgTrace(( AFS_SUBSYSTEM_LOAD_LIBRARY | AFS_SUBSYSTEM_INIT_PROCESSING,
AFS_TRACE_LEVEL_ERROR,
"AFSDevControl AFSInitializeGlobalDirectoryEntries failure %08lX\n",
- ntStatus);
+ ntStatus));
break;
}
if( !NT_SUCCESS( ntStatus))
{
- AFSDbgLogMsg( AFS_SUBSYSTEM_LOAD_LIBRARY | AFS_SUBSYSTEM_INIT_PROCESSING,
+ AFSDbgTrace(( AFS_SUBSYSTEM_LOAD_LIBRARY | AFS_SUBSYSTEM_INIT_PROCESSING,
AFS_TRACE_LEVEL_ERROR,
"AFSDevControl AFSInitializeSpecialShareNameList failure %08lX\n",
- ntStatus);
+ ntStatus));
break;
}
break;
}
+ case IOCTL_AFS_CONFIG_LIBRARY_TRACE:
+ {
+ AFSDebugTraceConfigCB *pConfigLib;
+
+ if ( pIrpSp->Parameters.DeviceIoControl.InputBufferLength != sizeof( AFSDebugTraceConfigCB))
+ {
+
+ ntStatus = STATUS_INVALID_PARAMETER;
+
+ break;
+ }
+
+ pConfigLib = (AFSDebugTraceConfigCB *)Irp->AssociatedIrp.SystemBuffer;
+
+ InterlockedCompareExchangePointer( (PVOID *)&AFSDebugTraceFnc,
+ pConfigLib->AFSDbgLogMsg,
+ (void *)pConfigLib->AFSDbgLogMsg);
+
+ break;
+ }
+
default:
{
+ //
+ // Note that this code path is never executed - default behavior is caught in the
+ // security checks in lib. New Ioctl functions therefore have to be added here and
+ // in ..\fs\AFSCommSupport.cpp
+ //
ntStatus = STATUS_NOT_IMPLEMENTED;
ntStatus = STATUS_UNSUCCESSFUL;
- AFSDbgLogMsg( 0,
+ AFSDbgTrace(( 0,
0,
"EXCEPTION - AFSDevControl %08lX\n",
- ulIoControlCode);
+ ulIoControlCode));
AFSDumpTraceFilesFnc();
}