def hNspiResolveNamesW(dce, handler, ContainerID=0, pPropTags=[], pPropTagsRaw=NULL, paStr=[]): request = NspiResolveNamesW() request['hRpc'] = handler request['pStat']['ContainerID'] = ContainerID if len(pPropTags) > 0: for aulPropTag in pPropTags: prop = DWORD() prop['Data'] = aulPropTag request['pPropTags']['aulPropTag'].append(prop) request['pPropTags']['cValues'] = len(pPropTags) request.fields['pPropTags'].fields['Data'].fields['aulPropTag'].fields[ 'MaximumCount'] = len(pPropTags) + 1 elif pPropTagsRaw == NULL: request.fields['pPropTags'] = NULL else: request['pPropTags'] = pPropTagsRaw if len(paStr) > 0: for paStrElem in paStr: value = LPWSTR() value['Data'] = checkNullString(paStrElem) request['paStr']['Strings'].append(value) request['paStr']['Count'] = len(paStr) resp = dce.request(request) return resp
def hNspiGetProps(dce, handler, ContainerID=0, CurrentRec=0, dwFlags=fSkipObjects, CodePage=CP_TELETEX, pPropTags=[]): request = NspiGetProps() request['hRpc'] = handler request['dwFlags'] = dwFlags request['pStat']['CurrentRec'] = CurrentRec request['pStat']['ContainerID'] = ContainerID request['pStat']['CodePage'] = CodePage for aulPropTag in pPropTags: prop = DWORD() prop['Data'] = aulPropTag request['pPropTags']['aulPropTag'].append(prop) request['pPropTags']['cValues'] = len(pPropTags) + 1 request.fields['pPropTags'].fields['Data'].fields['aulPropTag'].fields[ 'MaximumCount'] = len(pPropTags) + 1 resp = dce.request(request) return resp
def hNspiQueryRows(dce, handler, dwFlags=fSkipObjects, pStat=None, ContainerID=0, Count=50, pPropTags=[], pPropTagsRaw=NULL, lpETable=[]): request = NspiQueryRows() request['hRpc'] = handler request['dwFlags'] = dwFlags request['Count'] = Count if pStat == None: request['pStat']['ContainerID'] = ContainerID else: request['pStat'] = pStat if len(pPropTags) > 0: for aulPropTag in pPropTags: prop = DWORD() prop['Data'] = aulPropTag request['pPropTags']['aulPropTag'].append(prop) request['pPropTags']['cValues'] = len(pPropTags) request.fields['pPropTags'].fields['Data'].fields['aulPropTag'].fields[ 'MaximumCount'] = len(pPropTags) + 1 else: request['pPropTags'] = pPropTagsRaw if len(lpETable) > 0: for mID in lpETable: elem = DWORD() elem['Data'] = mID request['lpETable'].append(elem) request['dwETableCount'] = len(lpETable) else: request['lpETable'] = NULL request['dwETableCount'] = 0 resp = dce.request(request) return resp
def hNspiSeekEntries(dce, handler, displayName, ContainerID=0, SortType=0, \ lpETable=[], lpETableRaw=NULL, pPropTags=[], pPropTagsRaw=NULL): request = NspiSeekEntries() request['hRpc'] = handler request['pStat']['ContainerID'] = ContainerID # MS-OXNSPI 3.1.4.1.9.9 # If the SortType field in the input parameter pStat has any value other than # SortTypeDisplayName, the server MUST return the value GeneralFailure. request['pStat']['SortType'] = SortTypeDisplayName # MS-OXNSPI 3.1.4.1.9.10 # If the SortType field in the input parameter pStat is SortTypeDisplayName and the property # specified in the input parameter pTarget is anything other than PidTagDisplayName (with either # the Property Type PtypString8 or PtypString), the server MUST return the value # GeneralFailure. request['pTarget']['ulPropTag'] = 0x3001001F request['pTarget']['Value']['tag'] = 0x0000001F request['pTarget']['Value']['lpszW'] = checkNullString(displayName) if len(lpETable) > 0: for mID in lpETable: elem = DWORD() elem['Data'] = mID request['lpETable'].append(elem) else: request['lpETable'] = lpETableRaw if len(pPropTags) > 0: for aulPropTag in pPropTags: prop = DWORD() prop['Data'] = aulPropTag request['pPropTags']['aulPropTag'].append(prop) request.fields['pPropTags'].fields['aulPropTag'].fields[ 'MaximumCount'] = len(pPropTags) + 1 else: request['pPropTags'] = pPropTagsRaw resp = dce.request(request) return resp
def hNspiGetNamesFromIDs(dce, handler, lpguid=EMPTY_UUID, pPropTags=[], pPropTagsRaw=NULL): request = NspiGetNamesFromIDs() request['hRpc'] = handler request['lpguid'] = lpguid if len(pPropTags) > 0: for aulPropTag in pPropTags: prop = DWORD() prop['Data'] = aulPropTag request['pPropTags']['aulPropTag'].append(prop) request['pPropTags']['cValues'] = len(pPropTags) request.fields['pPropTags'].fields['Data'].fields['aulPropTag'].fields[ 'MaximumCount'] = len(pPropTags) + 1 elif pPropTagsRaw == NULL: request.fields['pPropTags'] = NULL else: request['pPropTags'] = pPropTagsRaw resp = dce.request(request) return resp