Package com.sun.jna.platform.win32.WinNT

Examples of com.sun.jna.platform.win32.WinNT.HANDLEByReference


     */
    public static boolean accessCheck(File file, AccessCheckPermission permissionToCheck) {
        boolean hasAccess = false;
        final Memory securityDescriptorMemoryPointer = getSecurityDescriptorForFile(file.getAbsolutePath().replaceAll("/", "\\"));

        HANDLEByReference openedAccessToken = null;
        final HANDLEByReference duplicatedToken = new HANDLEByReference();
        try{
            openedAccessToken = new HANDLEByReference();

            final int desireAccess = TOKEN_IMPERSONATE | TOKEN_QUERY | TOKEN_DUPLICATE | STANDARD_RIGHTS_READ;
            if(!Advapi32.INSTANCE.OpenProcessToken(Kernel32.INSTANCE.GetCurrentProcess(), desireAccess, openedAccessToken)) {
                throw new Win32Exception(Kernel32.INSTANCE.GetLastError());
            }

            if(!Advapi32.INSTANCE.DuplicateToken(openedAccessToken.getValue(), SECURITY_IMPERSONATION_LEVEL.SecurityImpersonation, duplicatedToken)) {
                throw new Win32Exception(Kernel32.INSTANCE.GetLastError());
            }

            final GENERIC_MAPPING mapping = new GENERIC_MAPPING();
            mapping.genericRead = new DWORD(FILE_GENERIC_READ);
            mapping.genericWrite = new DWORD(FILE_GENERIC_WRITE);
            mapping.genericExecute = new DWORD(FILE_GENERIC_EXECUTE);
            mapping.genericAll = new DWORD(FILE_ALL_ACCESS);

            final DWORDByReference rights = new DWORDByReference(new DWORD(permissionToCheck.getCode()));
            Advapi32.INSTANCE.MapGenericMask(rights, mapping);

            final PRIVILEGE_SET privileges = new PRIVILEGE_SET(1);
            privileges.PrivilegeCount = new DWORD(0);
            final DWORDByReference privilegeLength = new DWORDByReference(new DWORD(privileges.size()));

            final DWORDByReference grantedAccess = new DWORDByReference();
            final BOOLByReference result = new BOOLByReference();
            if(!Advapi32.INSTANCE.AccessCheck(securityDescriptorMemoryPointer,
                    duplicatedToken.getValue(),
                    rights.getValue(),
                    mapping,
                    privileges, privilegeLength, grantedAccess, result)) {
                throw new Win32Exception(Kernel32.INSTANCE.GetLastError());
            }

            hasAccess = result.getValue().booleanValue();

        } finally {

            if(openedAccessToken != null && openedAccessToken.getValue() != null) {
                Kernel32.INSTANCE.CloseHandle(openedAccessToken.getValue());
            }

            if(duplicatedToken != null && duplicatedToken.getValue() != null) {
                Kernel32.INSTANCE.CloseHandle(duplicatedToken.getValue());
            }

            if(securityDescriptorMemoryPointer != null) {
                securityDescriptorMemoryPointer.clear();
            }
View Full Code Here


              ptsServerExpiry);
          assertTrue(serverRc == W32Errors.SEC_I_CONTINUE_NEEDED || serverRc == W32Errors.SEC_E_OK);
        }       
      } while(serverRc != W32Errors.SEC_E_OK || clientRc != W32Errors.SEC_E_OK);     
      // query security context token
      HANDLEByReference phContextToken = new HANDLEByReference();
      assertEquals(W32Errors.SEC_E_OK, Secur32.INSTANCE.QuerySecurityContextToken(
          phServerContext, phContextToken));
      // release security context token
      assertTrue(Kernel32.INSTANCE.CloseHandle(phContextToken.getValue()));
      // release server context
      assertEquals(W32Errors.SEC_E_OK, Secur32.INSTANCE.DeleteSecurityContext(
          phServerContext));
      assertEquals(W32Errors.SEC_E_OK, Secur32.INSTANCE.FreeCredentialsHandle(
          phServerCredential));
View Full Code Here

      assertTrue(Kernel32.INSTANCE.SetHandleInformation(hFile, WinBase.HANDLE_FLAG_PROTECT_FROM_CLOSE, 0));
      assertTrue(Kernel32.INSTANCE.CloseHandle(hFile));
    }

    public void testCreatePipe() {
      HANDLEByReference hReadPipe = new HANDLEByReference();
      HANDLEByReference hWritePipe = new HANDLEByReference();

      assertTrue(Kernel32.INSTANCE.CreatePipe(hReadPipe, hWritePipe, null, 0));
      assertTrue(Kernel32.INSTANCE.CloseHandle(hReadPipe.getValue()));
      assertTrue(Kernel32.INSTANCE.CloseHandle(hWritePipe.getValue()));
    }
View Full Code Here

public class Win32SpoolMonitor {

    public Win32SpoolMonitor() {

        String pPrinterName = "HP Color LaserJet CM4730 MFP PCL 6";
        HANDLEByReference phPrinter = new HANDLEByReference();
        Winspool.INSTANCE.OpenPrinter(pPrinterName, phPrinter, null);

        // Get change notification handle for the printer
        HANDLE chgObject = Winspool.INSTANCE
                .FindFirstPrinterChangeNotification(phPrinter.getValue(),
                        Winspool.PRINTER_CHANGE_JOB, 0, null);

        if (chgObject != null) {
            while (true) {
                // Wait for the change notification
View Full Code Here

      assertTrue(Kernel32.INSTANCE.SetHandleInformation(hFile, WinBase.HANDLE_FLAG_PROTECT_FROM_CLOSE, 0));
      assertTrue(Kernel32.INSTANCE.CloseHandle(hFile));
    }

    public void testCreatePipe() {
      HANDLEByReference hReadPipe = new HANDLEByReference();
      HANDLEByReference hWritePipe = new HANDLEByReference();

      assertTrue(Kernel32.INSTANCE.CreatePipe(hReadPipe, hWritePipe, null, 0));
      assertTrue(Kernel32.INSTANCE.CloseHandle(hReadPipe.getValue()));
      assertTrue(Kernel32.INSTANCE.CloseHandle(hWritePipe.getValue()));
    }
View Full Code Here

    }
   
    private FileInfo waitForChange() {
        Kernel32 klib = Kernel32.INSTANCE;
        IntByReference rcount = new IntByReference();
        HANDLEByReference rkey = new HANDLEByReference();
        PointerByReference roverlap = new PointerByReference();
        klib.GetQueuedCompletionStatus(port, rcount, rkey, roverlap, WinBase.INFINITE);
       
        synchronized (this) {
            return (FileInfo)handleMap.get(rkey.getValue());
        }
    }
View Full Code Here

  /**
   * Return the group memberships of the currently logged on user.
   * @return An array of groups.
   */
  public static Account[] getCurrentUserGroups() {   
      HANDLEByReference phToken = new HANDLEByReference();     
      try {
        // open thread or process token
          HANDLE threadHandle = Kernel32.INSTANCE.GetCurrentThread();
          if (! Advapi32.INSTANCE.OpenThreadToken(threadHandle,
              WinNT.TOKEN_DUPLICATE | WinNT.TOKEN_QUERY, true, phToken)) {
              if (W32Errors.ERROR_NO_TOKEN != Kernel32.INSTANCE.GetLastError()) {
                throw new Win32Exception(Kernel32.INSTANCE.GetLastError());
              }         
              HANDLE processHandle = Kernel32.INSTANCE.GetCurrentProcess();
              if (! Advapi32.INSTANCE.OpenProcessToken(processHandle,
                  WinNT.TOKEN_DUPLICATE | WinNT.TOKEN_QUERY, phToken)) {
                throw new Win32Exception(Kernel32.INSTANCE.GetLastError());
              }
          }
          return getTokenGroups(phToken.getValue());
      } finally {
        if (phToken.getValue() != WinBase.INVALID_HANDLE_VALUE) {
          if (! Kernel32.INSTANCE.CloseHandle(phToken.getValue())) {
            throw new Win32Exception(Kernel32.INSTANCE.GetLastError());
          }
        }
      }   
  }
View Full Code Here

      userInfo.usri1_password = new WString("!JNAP$$Wrd0");
      userInfo.usri1_priv = LMAccess.USER_PRIV_USER;
    try {
        assertEquals(LMErr.NERR_Success, Netapi32.INSTANCE.NetUserAdd(
            null, 1, userInfo, null));
      HANDLEByReference phUser = new HANDLEByReference();
      try {
        assertTrue(Advapi32.INSTANCE.LogonUser(userInfo.usri1_name.toString(),
            null, userInfo.usri1_password.toString(), WinBase.LOGON32_LOGON_NETWORK,
            WinBase.LOGON32_PROVIDER_DEFAULT, phUser));
        Account[] groups = Advapi32Util.getTokenGroups(phUser.getValue());
        assertTrue(groups.length > 0);
        for(Account group : groups) {
          assertTrue(group.name.length() > 0);
          assertTrue(group.sidString.length() > 0);
          assertTrue(group.sid.length > 0);
        }
      } finally {
        if (phUser.getValue() != WinBase.INVALID_HANDLE_VALUE) {
          Kernel32.INSTANCE.CloseHandle(phUser.getValue());
        }       
      }
    } finally {
        assertEquals(LMErr.NERR_Success, Netapi32.INSTANCE.NetUserDel(
            null, userInfo.usri1_name.toString()));     
View Full Code Here

      userInfo.usri1_password = new WString("!JNAP$$Wrd0");
      userInfo.usri1_priv = LMAccess.USER_PRIV_USER;
    try {
        assertEquals(LMErr.NERR_Success, Netapi32.INSTANCE.NetUserAdd(
            null, 1, userInfo, null));
      HANDLEByReference phUser = new HANDLEByReference();
      try {
        assertTrue(Advapi32.INSTANCE.LogonUser(userInfo.usri1_name.toString(),
            null, userInfo.usri1_password.toString(), WinBase.LOGON32_LOGON_NETWORK,
            WinBase.LOGON32_PROVIDER_DEFAULT, phUser));
        Advapi32Util.Account account = Advapi32Util.getTokenAccount(phUser.getValue());
        assertTrue(account.name.length() > 0);
        assertEquals(userInfo.usri1_name.toString(), account.name);
      } finally {
        if (phUser.getValue() != WinBase.INVALID_HANDLE_VALUE) {
          Kernel32.INSTANCE.CloseHandle(phUser.getValue());
        }
      }
    } finally {
        assertEquals(LMErr.NERR_Success, Netapi32.INSTANCE.NetUserDel(
            null, userInfo.usri1_name.toString()));     
View Full Code Here

      assertEquals(null, Kernel32.INSTANCE.LocalFree(convertedSidStringPtr.getValue()));
      assertEquals(null, Kernel32.INSTANCE.LocalFree(sid.getValue().getPointer()));
    }
   
    public void testLogonUser() {
      HANDLEByReference phToken = new HANDLEByReference();
      assertFalse(Advapi32.INSTANCE.LogonUser("AccountDoesntExist", ".", "passwordIsInvalid",
          WinBase.LOGON32_LOGON_NETWORK, WinBase.LOGON32_PROVIDER_DEFAULT, phToken));
      assertTrue(W32Errors.ERROR_SUCCESS != Kernel32.INSTANCE.GetLastError());
    }
View Full Code Here

TOP

Related Classes of com.sun.jna.platform.win32.WinNT.HANDLEByReference

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.