|
Navigation
- Home
- Community
- Development
- myReactOS
- Fundraiser 2012
Doxygen
- Main Page
- Alphabetical List
- Data Structures
- Directories
- File List
- Data Fields
- Globals
- Related Pages
Search
|
|
|
Definition at line 132 of file deviceio.c.
Referenced by AuxGetAudio(), AuxSetAudio(), ClearCommBreak(), ClearCommError(), Control(), createIpForwardEntry(), DECLARE_INTERFACE_(), deleteIpForwardEntry(), EnableVolumeCompression(), EscapeCommFunction(), FindFirstVolumeW(), get_drive_connection(), GetCommMask(), GetCommModemStatus(), GetCommState(), GetCommTimeouts(), GetDeviceCapabilities(), GetDeviceData(), getDriverData(), hasArp(), HidD_FlushQueue(), HidD_GetAttributes(), HidD_GetConfiguration(), HidD_GetFeature(), HidD_GetIndexedString(), HidD_GetInputReport(), HidD_GetManufacturerString(), HidD_GetMsGenreDescriptor(), HidD_GetNumInputBuffers(), HidD_GetPhysicalDescriptor(), HidD_GetPreparsedData(), HidD_GetProductString(), HidD_GetSerialNumberString(), HidD_SetConfiguration(), HidD_SetFeature(), HidD_SetNumInputBuffers(), HidD_SetOutputReport(), IDirectSoundCaptureBufferImpl_Start(), IsWlanAdapter(), CKsInterfaceHandler::KsProcessMediaSamples(), KsSynchronousDeviceControl(), main(), MCICDA_CalcFrame(), MCICDA_CalcTime(), MCICDA_GetStatus(), MCICDA_Info(), MCICDA_Pause(), MCICDA_Play(), MCICDA_playLoop(), MCICDA_Resume(), MCICDA_Seek(), MCICDA_SetDoor(), MCICDA_SkipDataTracks(), MCICDA_Status(), MCICDA_Stop(), OpenAdapterHandle(), OpenDriverHandle(), PrimaryDirectSoundBuffer_Write(), PurgeComm(), RemoveDirectoryW(), SendRequest(), SerenumDetectLegacyDevice(), SerenumDetectPnpDevice(), SermouseDetectLegacyDevice(), SetCommBreak(), SetCommMask(), SetCommState(), SetCommTimeouts(), setDriverData(), SetIpNetEntry(), SetupComm(), SetWaveFormat(), SyncOverlappedDeviceIoControl(), tdiGetMibForIfEntity(), tdiGetMibForIpEntity(), tdiGetSetOfThings(), TestKs(), TransmitCommChar(), TuiDrawRegion(), TuiInit(), TuiSetCursorInfo(), TuiSetScreenInfo(), TuiSwapConsole(), WahCreateSocketHandle(), WaitCommEvent(), WlanConnect(), WlanDisconnect(), WlanPrintCurrentStatus(), WlanScan(), and WriteMidi().
{
BOOL FsIoCtl;
NTSTATUS Status;
PVOID ApcContext;
IO_STATUS_BLOCK Iosb;
FsIoCtl = ((dwIoControlCode >> 16) == FILE_DEVICE_FILE_SYSTEM);
if (lpOverlapped != NULL)
{
lpOverlapped->Internal = STATUS_PENDING;
ApcContext = (((ULONG_PTR)lpOverlapped->hEvent & 0x1) ? NULL : lpOverlapped);
if (FsIoCtl)
{
Status = NtFsControlFile(hDevice,
lpOverlapped->hEvent,
NULL,
ApcContext,
(PIO_STATUS_BLOCK)lpOverlapped,
dwIoControlCode,
lpInBuffer,
nInBufferSize,
lpOutBuffer,
nOutBufferSize);
}
else
{
Status = NtDeviceIoControlFile(hDevice,
lpOverlapped->hEvent,
NULL,
ApcContext,
(PIO_STATUS_BLOCK)lpOverlapped,
dwIoControlCode,
lpInBuffer,
nInBufferSize,
lpOutBuffer,
nOutBufferSize);
}
if (!(NT_ERROR(Status)) && (lpBytesReturned))
{
_SEH2_TRY
{
*lpBytesReturned = lpOverlapped->InternalHigh;
}
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
{
*lpBytesReturned = 0;
}
_SEH2_END;
}
if (!(NT_SUCCESS(Status)) || (Status == STATUS_PENDING))
{
BaseSetLastNTError(Status);
return FALSE;
}
}
else
{
if (FsIoCtl)
{
Status = NtFsControlFile(hDevice,
NULL,
NULL,
NULL,
&Iosb,
dwIoControlCode,
lpInBuffer,
nInBufferSize,
lpOutBuffer,
nOutBufferSize);
}
else
{
Status = NtDeviceIoControlFile(hDevice,
NULL,
NULL,
NULL,
&Iosb,
dwIoControlCode,
lpInBuffer,
nInBufferSize,
lpOutBuffer,
nOutBufferSize);
}
if (Status == STATUS_PENDING)
{
Status = NtWaitForSingleObject(hDevice, FALSE, NULL);
if (NT_SUCCESS(Status)) Status = Iosb.Status;
}
if (NT_SUCCESS(Status))
{
*lpBytesReturned = Iosb.Information;
}
else
{
if (!NT_ERROR(Status)) *lpBytesReturned = Iosb.Information;
BaseSetLastNTError(Status);
return FALSE;
}
}
return TRUE;
}
|
Generated on Sat May 26 2012 05:09:59 for ReactOS by
1.7.6.1
|