DWORD nLength,
PDWORD nLengthNeeded)
{
- PWINSTATION_OBJECT WinStaObject;
- PDESKTOP DesktopObject = NULL;
NTSTATUS Status;
+ PWINSTATION_OBJECT WinStaObject = NULL;
+ PDESKTOP DesktopObject = NULL;
+ USEROBJECTFLAGS ObjectFlags;
PVOID pvData = NULL;
DWORD nDataSize = 0;
}
_SEH2_END;
- /* try windowstation */
+ /* Try window station */
TRACE("Trying to open window station %p\n", hObject);
Status = ObReferenceObjectByHandle(hObject,
0,
if (Status == STATUS_OBJECT_TYPE_MISMATCH)
{
- /* try desktop */
+ /* Try desktop */
TRACE("Trying to open desktop %p\n", hObject);
WinStaObject = NULL;
Status = IntValidateDesktopHandle(hObject,
TRACE("WinSta or Desktop opened!!\n");
- /* get data */
+ /* Get data */
switch (nIndex)
{
case UOI_FLAGS:
- nDataSize = sizeof(USEROBJECTFLAGS);
- if (nLength >= nDataSize)
- {
- PUSEROBJECTFLAGS ObjectFlags = pvInformation;
-
- ObjectFlags->fInherit = 0;
- ObjectFlags->fReserved = 0;
- ObjectFlags->dwFlags = 0;
-
- Status = STATUS_SUCCESS;
- }
- else
- {
- Status = STATUS_BUFFER_TOO_SMALL;
- }
+ {
+ /* This is a default implementation that does almost nothing */
+ ObjectFlags.fInherit = FALSE;
+ ObjectFlags.fReserved = FALSE;
+ ObjectFlags.dwFlags = 0;
+
+ pvData = &ObjectFlags;
+ nDataSize = sizeof(ObjectFlags);
+ Status = STATUS_SUCCESS;
ERR("UOI_FLAGS unimplemented!\n");
break;
+ }
case UOI_NAME:
+ {
if (WinStaObject != NULL)
{
pvData = WinStaObject->Name.Buffer;
Status = STATUS_SUCCESS;
}
else
+ {
Status = STATUS_INVALID_PARAMETER;
+ }
break;
+ }
case UOI_TYPE:
+ {
if (WinStaObject != NULL)
{
pvData = L"WindowStation";
Status = STATUS_SUCCESS;
}
else
+ {
Status = STATUS_INVALID_PARAMETER;
+ }
break;
+ }
case UOI_USER_SID:
Status = STATUS_NOT_IMPLEMENTED;
}
Exit:
- if (Status == STATUS_SUCCESS && nLength < nDataSize)
+ if ((Status == STATUS_SUCCESS) && (nLength < nDataSize))
Status = STATUS_BUFFER_TOO_SMALL;
_SEH2_TRY
if (nLengthNeeded)
*nLengthNeeded = nDataSize;
- /* try to copy data to caller */
+ /* Try to copy data to caller */
if (Status == STATUS_SUCCESS)
{
TRACE("Trying to copy data to caller (len = %lu, len needed = %lu)\n", nLength, nDataSize);
}
_SEH2_END;
- /* release objects */
- if (WinStaObject != NULL)
- ObDereferenceObject(WinStaObject);
+ /* Release objects */
if (DesktopObject != NULL)
ObDereferenceObject(DesktopObject);
+ if (WinStaObject != NULL)
+ ObDereferenceObject(WinStaObject);
if (!NT_SUCCESS(Status))
{